<!DOCTYPE html>
<html lang="en" dir="ltr" typeof="bibo:Document w3p:PR" about="" property="dcterms:language" content="en">
<head>
<title>JSON-LD 1.0</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style type="text/css">
  .highlight { font-weight: bold; color: #0a3; }
  .comment { color: #999; }
  table, thead, tr, td { padding: 5px; border-width: 1px; border-spacing: 0px; border-style: solid; border-collapse: collapse; }
</style>
<style>
/* --- INLINES --- */
em.rfc2119 {
    text-transform:     lowercase;
    font-variant:       small-caps;
    font-style:         normal;
    color:              #900;
}

h1 acronym, h2 acronym, h3 acronym, h4 acronym, h5 acronym, h6 acronym, a acronym,
h1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr {
    border: none;
}

dfn {
    font-weight:    bold;
}

a.internalDFN {
    color:  inherit;
    border-bottom:  1px solid #99c;
    text-decoration:    none;
}

a.externalDFN {
    color:  inherit;
    border-bottom:  1px dotted #ccc;
    text-decoration:    none;
}

a.bibref {
    text-decoration:    none;
}

cite .bibref {
    font-style: normal;
}

code {
    color:  #ff4500;
}

/* --- TOC --- */
.toc a, .tof a {
    text-decoration:    none;
}

a .secno, a .figno {
    color:  #000;
}

ul.tof, ol.tof {
    list-style: none outside none;
}

.caption {
    margin-top: 0.5em;
    font-style:   italic;
}

/* --- TABLE --- */
table.simple {
    border-spacing: 0;
    border-collapse:    collapse;
    border-bottom:  3px solid #005a9c;
}

.simple th {
    background: #005a9c;
    color:  #fff;
    padding:    3px 5px;
    text-align: left;
}

.simple th[scope="row"] {
    background: inherit;
    color:  inherit;
    border-top: 1px solid #ddd;
}

.simple td {
    padding:    3px 10px;
    border-top: 1px solid #ddd;
}

.simple tr:nth-child(even) {
    background: #f0f6ff;
}

/* --- DL --- */
.section dd > p:first-child {
    margin-top: 0;
}

.section dd > p:last-child {
    margin-bottom: 0;
}

.section dd {
    margin-bottom:  1em;
}

.section dl.attrs dd, .section dl.eldef dd {
    margin-bottom:  0;
}
</style><style>/* --- EXAMPLES --- */
div.example-title {
    min-width: 7.5em;
    color: #b9ab2d;
}
div.example-title span {
    text-transform: uppercase;
}
aside.example, div.example, div.illegal-example {
    padding: 0.5em;
    margin: 1em 0;
    position: relative;
    clear: both;
}
div.illegal-example { color: red }
div.illegal-example p { color: black }
aside.example, div.example {
    padding: .5em;
    border-left-width: .5em;
    border-left-style: solid;
    border-color: #e0cb52;
    background: #fcfaee;
}

aside.example div.example {
    border-left-width: .1em;
    border-color: #999;
    background: #fff;
}
aside.example div.example div.example-title {
    color: #999;
}
</style><style>/* --- ISSUES/NOTES --- */
div.issue-title, div.note-title {
    padding-right:  1em;
    min-width: 7.5em;
    color: #b9ab2d;
}
div.issue-title { color: #e05252; }
div.note-title { color: #2b2; }
div.issue-title span, div.note-title span {
    text-transform: uppercase;
}
div.note, div.issue {
    margin-top: 1em;
    margin-bottom: 1em;
}
.note > p:first-child, .issue > p:first-child { margin-top: 0 }
.issue, .note {
    padding: .5em;
    border-left-width: .5em;
    border-left-style: solid;
}
div.issue, div.note {
    padding: 1em 1.2em 0.5em;
    margin: 1em 0;
    position: relative;
    clear: both;
}
span.note, span.issue { padding: .1em .5em .15em; }

.issue {
    border-color: #e05252;
    background: #fbe9e9;
}
.note {
    border-color: #52e052;
    background: #e9fbe9;
}


</style><link href="https://www.w3.org/StyleSheets/TR/W3C-PR" rel="stylesheet"><!--[if lt IE 9]><script src='https://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head>

<body id="respecDocument" role="document" class="h-entry"><div id="respecHeader" role="contentinfo" class="head">
  <p>

      <a href="http://www.w3.org/"><img src="https://www.w3.org/Icons/w3c_home" alt="W3C" height="48" width="72"></a>

  </p>
  <h1 class="title p-name" id="title" property="dcterms:title">JSON-LD 1.0</h1>

    <h2 property="bibo:subtitle" id="subtitle">A JSON-based Serialization for Linked Data</h2>

  <h2 id="w3c-proposed-recommendation-05-november-2013" property="dcterms:issued" datatype="xsd:dateTime" content="2013-11-04T23:00:00.000Z"><abbr title="World Wide Web Consortium">W3C</abbr> Proposed Recommendation <time class="dt-published" datetime="2013-11-05">05 November 2013</time></h2>
  <dl>

      <dt>This version:</dt>
      <dd><a class="u-url" href="http://www.w3.org/TR/2013/PR-json-ld-20131105/">http://www.w3.org/TR/2013/PR-json-ld-20131105/</a></dd>
      <dt>Latest published version:</dt>
      <dd><a href="http://www.w3.org/TR/json-ld/">http://www.w3.org/TR/json-ld/</a></dd>


      <dt>Latest editor's draft:</dt>
      <dd><a href="http://dvcs.w3.org/hg/json-ld/raw-file/default/spec/latest/json-ld/index.html">http://dvcs.w3.org/hg/json-ld/raw-file/default/spec/latest/json-ld/index.html</a></dd>





      <dt>Previous version:</dt>
      <dd><a rel="dcterms:replaces" href="http://www.w3.org/TR/2013/CR-json-ld-20130910/">http://www.w3.org/TR/2013/CR-json-ld-20130910/</a></dd>


    <dt>Editors:</dt>
    <dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Manu Sporny" href="http://manu.sporny.org/">Manu Sporny</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://digitalbazaar.com/">Digital Bazaar</a></span>
</dd>
<dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Gregg Kellogg" href="http://greggkellogg.net/">Gregg Kellogg</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://kellogg-assoc.com/">Kellogg Associates</a></span>
</dd>
<dd class="p-author h-card vcard" rel="bibo:editor" inlist=""><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Markus Lanthaler" href="http://www.markus-lanthaler.com/">Markus Lanthaler</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.tugraz.at/">Graz University of Technology</a></span>
</dd>


      <dt>Authors:</dt>
      <dd class="p-author h-card vcard" rel="dcterms:contributor"><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Manu Sporny" href="http://digitalbazaar.com/">Manu Sporny</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://digitalbazaar.com/">Digital Bazaar</a></span>
</dd>
<dd class="p-author h-card vcard" rel="dcterms:contributor"><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Dave Longley" href="http://digitalbazaar.com/">Dave Longley</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://digitalbazaar.com/">Digital Bazaar</a></span>
</dd>
<dd class="p-author h-card vcard" rel="dcterms:contributor"><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Gregg Kellogg" href="http://greggkellogg.net/">Gregg Kellogg</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://kellogg-assoc.com/">Kellogg Associates</a></span>
</dd>
<dd class="p-author h-card vcard" rel="dcterms:contributor"><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Markus Lanthaler" href="http://www.markus-lanthaler.com/">Markus Lanthaler</a>, <a rel="foaf:workplaceHomepage" class="p-org org h-org h-card" href="http://www.tugraz.at/">Graz University of Technology</a></span>
</dd>
<dd class="p-author h-card vcard" rel="dcterms:contributor"><span typeof="foaf:Person"><a class="u-url url p-name fn" rel="foaf:homepage" property="foaf:name" content="Niklas Lindström" href="http://neverspace.net/">Niklas Lindström</a></span>
</dd>



  </dl>


    <p>

        This document is also available in this non-normative format:

      <a rel="alternate" href="diff-20130910.html">diff to previous version</a>
    </p>




      <p class="copyright">
        <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> ©
        2010-2013

        <a href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup>
        (<a href="http://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>,
        <a href="http://www.ercim.eu/"><abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr></a>,
        <a href="http://www.keio.ac.jp/">Keio</a>, <a href="http://ev.buaa.edu.cn/">Beihang</a>), All Rights Reserved.
        <abbr title="World Wide Web Consortium">W3C</abbr> <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
        <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and
        <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.
      </p>


  <hr>
</div>
<section rel="bibo:chapter" resource="#abstract" typeof="bibo:Chapter" datatype="" property="dcterms:abstract" class="introductory" id="abstract"><h2 id="h2_abstract" role="heading" aria-level="1">Abstract</h2>
  <p>JSON is a useful data serialization and messaging format.
    This specification defines JSON-LD, a JSON-based format to serialize
    Linked Data. The syntax is designed to easily integrate into deployed
    systems that already use JSON, and provides a smooth upgrade path from
    JSON to JSON-LD.
    It is primarily intended to be a way to use Linked Data in Web-based
    programming environments, to build interoperable Web services, and to
    store Linked Data in JSON-based storage engines.</p>
</section><section rel="bibo:chapter" resource="#sotd" typeof="bibo:Chapter" id="sotd" class="introductory"><h2 id="h2_sotd" role="heading" aria-level="1">Status of This Document</h2>



        <p>
          <em>This section describes the status of this document at the time of its publication. Other
          documents may supersede this document. A list of current <abbr title="World Wide Web Consortium">W3C</abbr> publications and the latest revision
          of this technical report can be found in the <a href="http://www.w3.org/TR/"><abbr title="World Wide Web Consortium">W3C</abbr> technical reports
          index</a> at http://www.w3.org/TR/.</em>
        </p>

  <p>This document has been under development for over 31 months in the
    JSON for Linking Data Community Group. The document has been
    transferred to the RDF Working Group for review, improvement, and publication.
    The specification has undergone significant development, review, and changes
    during the course of the last 31 months.</p>

  <p>There are several independent
    <a href="http://json-ld.org/test-suite/reports/">interoperable implementations</a> of
    this specification. There is a fairly complete test suite [<cite><a href="#bib-JSON-LD-TESTS" class="bibref">JSON-LD-TESTS</a></cite>]
    and a <a href="http://json-ld.org/playground/">live JSON-LD editor</a>
    that is capable of demonstrating the features described in
    this document. While development on implementations, the test suite
    and the live editor will continue, they are believed to be mature enough
    to be integrated into a non-production system at this point in time with
    the expectation that they could be used in a production system within the
    next two months.</p>

  <p>Changes since the
    <a href="http://www.w3.org/TR/2013/CR-json-ld-20130910/">10&nbsp;September&nbsp;2013 Candidate Recommendation</a>:</p>

  <ul>
    <li>Clarify context-sensitivity of <code>@type</code></li>
  </ul>


        <p>
          This document was published by the <a href="http://www.w3.org/2011/rdf-wg/">RDF Working Group</a> as a Proposed Recommendation.

            This document is intended to become a <abbr title="World Wide Web Consortium">W3C</abbr> Recommendation.






              The <abbr title="World Wide Web Consortium">W3C</abbr> Membership and other interested parties are invited
              to review the document and send comments to
              <a rel="discussion" href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a>
              (<a href="mailto:public-rdf-comments-request@w3.org?subject=subscribe">subscribe</a>,
              <a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">archives</a>)
              through 05 December 2013.
              Advisory Committee Representatives should consult their
              <a href="https://www.w3.org/2002/09/wbs/myQuestionnaires">WBS questionnaires</a>.
              Note that substantive technical comments were expected during the Last Call review period that ended 10 May 2013.
            </p>



          <p>
            Publication as a Proposed Recommendation does not imply endorsement by the <abbr title="World Wide Web Consortium">W3C</abbr> Membership.
            This is a draft document and may be updated, replaced or obsoleted by other documents at
            any time. It is inappropriate to cite this document as other than work in progress.
          </p>


        <p>

            This document was produced by a group operating under the

                <a id="sotd_patent" about="" rel="w3p:patentRules" href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.





              <abbr title="World Wide Web Consortium">W3C</abbr> maintains a <a href="http://www.w3.org/2004/01/pp-impl/46168/status" rel="disclosure">public list of any patent disclosures</a>

            made in connection with the deliverables of the group; that page also includes instructions for
            disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains
            <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the
            information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
            6 of the <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.


        </p>




</section><section id="toc"><h2 id="h2_toc" role="heading" aria-level="1" class="introductory">Table of Contents</h2><ul id="respecContents" role="directory" class="toc"><li class="tocline"><a class="tocxref" href="#introduction"><span class="secno">1. </span>Introduction</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#how-to-read-this-document"><span class="secno">1.1 </span>How to Read this Document</a></li></ul></li><li class="tocline"><a class="tocxref" href="#design-goals-and-rationale"><span class="secno">2. </span>Design Goals and Rationale</a></li><li class="tocline"><a class="tocxref" href="#terminology"><span class="secno">3. </span>Terminology</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#general-terminology"><span class="secno">3.1 </span>General Terminology</a></li><li class="tocline"><a class="tocxref" href="#data-model-overview"><span class="secno">3.2 </span>Data Model Overview</a></li><li class="tocline"><a class="tocxref" href="#syntax-tokens-and-keywords"><span class="secno">3.3 </span>Syntax Tokens and Keywords</a></li></ul></li><li class="tocline"><a class="tocxref" href="#conformance"><span class="secno">4. </span>Conformance</a></li><li class="tocline"><a class="tocxref" href="#basic-concepts"><span class="secno">5. </span>Basic Concepts</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#the-context"><span class="secno">5.1 </span>The Context</a></li><li class="tocline"><a class="tocxref" href="#iris"><span class="secno">5.2 </span>IRIs</a></li><li class="tocline"><a class="tocxref" href="#node-identifiers"><span class="secno">5.3 </span>Node Identifiers</a></li><li class="tocline"><a class="tocxref" href="#specifying-the-type"><span class="secno">5.4 </span>Specifying the Type</a></li></ul></li><li class="tocline"><a class="tocxref" href="#advanced-concepts"><span class="secno">6. </span>Advanced Concepts</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#base-iri"><span class="secno">6.1 </span>Base <abbr title="Internationalized Resource Identifier">IRI</abbr></a></li><li class="tocline"><a class="tocxref" href="#default-vocabulary"><span class="secno">6.2 </span>Default Vocabulary</a></li><li class="tocline"><a class="tocxref" href="#compact-iris"><span class="secno">6.3 </span>Compact IRIs</a></li><li class="tocline"><a class="tocxref" href="#typed-values"><span class="secno">6.4 </span>Typed Values</a></li><li class="tocline"><a class="tocxref" href="#type-coercion"><span class="secno">6.5 </span>Type Coercion</a></li><li class="tocline"><a class="tocxref" href="#embedding"><span class="secno">6.6 </span>Embedding</a></li><li class="tocline"><a class="tocxref" href="#advanced-context-usage"><span class="secno">6.7 </span>Advanced Context Usage</a></li><li class="tocline"><a class="tocxref" href="#interpreting-json-as-json-ld"><span class="secno">6.8 </span>Interpreting JSON as JSON-LD</a></li><li class="tocline"><a class="tocxref" href="#string-internationalization"><span class="secno">6.9 </span>String Internationalization</a></li><li class="tocline"><a class="tocxref" href="#iri-expansion-within-a-context"><span class="secno">6.10 </span><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion within a Context</a></li><li class="tocline"><a class="tocxref" href="#sets-and-lists"><span class="secno">6.11 </span>Sets and Lists</a></li><li class="tocline"><a class="tocxref" href="#reverse-properties"><span class="secno">6.12 </span>Reverse Properties</a></li><li class="tocline"><a class="tocxref" href="#named-graphs"><span class="secno">6.13 </span>Named Graphs</a></li><li class="tocline"><a class="tocxref" href="#identifying-blank-nodes"><span class="secno">6.14 </span>Identifying Blank Nodes</a></li><li class="tocline"><a class="tocxref" href="#aliasing-keywords"><span class="secno">6.15 </span>Aliasing Keywords</a></li><li class="tocline"><a class="tocxref" href="#data-indexing"><span class="secno">6.16 </span>Data Indexing</a></li><li class="tocline"><a class="tocxref" href="#expanded-document-form"><span class="secno">6.17 </span>Expanded Document Form</a></li><li class="tocline"><a class="tocxref" href="#compacted-document-form"><span class="secno">6.18 </span>Compacted Document Form</a></li><li class="tocline"><a class="tocxref" href="#flattened-document-form"><span class="secno">6.19 </span>Flattened Document Form</a></li><li class="tocline"><a class="tocxref" href="#embedding-json-ld-in-html-documents"><span class="secno">6.20 </span>Embedding JSON-LD in HTML Documents</a></li></ul></li><li class="tocline"><a class="tocxref" href="#data-model"><span class="secno">7. </span>Data Model</a></li><li class="tocline"><a class="tocxref" href="#json-ld-grammar"><span class="secno">8. </span>JSON-LD Grammar</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#terms"><span class="secno">8.1 </span>Terms</a></li><li class="tocline"><a class="tocxref" href="#node-objects"><span class="secno">8.2 </span>Node Objects</a></li><li class="tocline"><a class="tocxref" href="#value-objects"><span class="secno">8.3 </span>Value Objects</a></li><li class="tocline"><a class="tocxref" href="#lists-and-sets"><span class="secno">8.4 </span>Lists and Sets</a></li><li class="tocline"><a class="tocxref" href="#language-maps"><span class="secno">8.5 </span>Language Maps</a></li><li class="tocline"><a class="tocxref" href="#index-maps"><span class="secno">8.6 </span>Index Maps</a></li><li class="tocline"><a class="tocxref" href="#context-definitions"><span class="secno">8.7 </span>Context Definitions</a></li></ul></li><li class="tocline"><a class="tocxref" href="#relationship-to-rdf"><span class="secno">9. </span>Relationship to RDF</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#serializing-deserializing-rdf"><span class="secno">9.1 </span>Serializing/Deserializing RDF</a></li></ul></li><li class="tocline"><a class="tocxref" href="#relationship-to-other-linked-data-formats"><span class="secno">A. </span>Relationship to Other Linked Data Formats</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#turtle"><span class="secno">A.1 </span>Turtle</a></li><li class="tocline"><a class="tocxref" href="#rdfa"><span class="secno">A.2 </span>RDFa</a></li><li class="tocline"><a class="tocxref" href="#microformats"><span class="secno">A.3 </span>Microformats</a></li><li class="tocline"><a class="tocxref" href="#microdata"><span class="secno">A.4 </span>Microdata</a></li></ul></li><li class="tocline"><a class="tocxref" href="#iana-considerations"><span class="secno">B. </span>IANA Considerations</a></li><li class="tocline"><a class="tocxref" href="#acknowledgements"><span class="secno">C. </span>Acknowledgements</a></li><li class="tocline"><a class="tocxref" href="#references"><span class="secno">D. </span>References</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#normative-references"><span class="secno">D.1 </span>Normative references</a></li><li class="tocline"><a class="tocxref" href="#informative-references"><span class="secno">D.2 </span>Informative references</a></li></ul></li></ul></section>



<section id="introduction" class="informative">
  <!--OddPage--><h2 id="h2_introduction" role="heading" aria-level="1"><span class="secno">1. </span>Introduction</h2><p><em>This section is non-normative.</em></p>

  <p>Linked Data [<cite><a href="#bib-LINKED-DATA" class="bibref">LINKED-DATA</a></cite>] is a way to create a network of
   standards-based machine interpretable data across different documents and
   Web sites. It allows an application to start at one piece of Linked Data,
   and follow embedded links to other pieces of Linked Data that are hosted on
   different sites across the Web.</p>

  <p>JSON-LD is a lightweight syntax to serialize Linked Data in
    JSON [<cite><a href="#bib-RFC4627" class="bibref">RFC4627</a></cite>]. Its design allows existing JSON to be interpreted as
    Linked Data with minimal changes. JSON-LD is primarily intended to be a
    way to use Linked Data in Web-based programming environments, to build
    interoperable Web services, and to store Linked Data in JSON-based storage engines. Since
    JSON-LD is 100% compatible with JSON, the large number of JSON parsers and libraries
    available today can be reused. In addition to all the features JSON provides,
    JSON-LD introduces:</p>

  <ul>
    <li>a universal identifier mechanism for <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON objects</a>
      via the use of <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>,</li>
    <li>a way to disambiguate keys shared among different JSON documents by mapping
      them to <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> via a <a href="#dfn-context" title="context" class="tref internalDFN">context</a>,</li>
    <li>a mechanism in which a value in a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> may refer
      to a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> on a different site on the Web,</li>
    <li>the ability to annotate <a href="#dfn-string" title="string" class="tref internalDFN">strings</a> with their language,</li>
    <li>a way to associate datatypes with values such as dates and times,</li>
    <li>and a facility to express one or more directed graphs, such as a social
      network, in a single document.</li>
  </ul>

  <p>
   JSON-LD is designed to be usable directly as JSON, with no knowledge of RDF
   [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>]. It is also designed to be usable as RDF, if desired, for
   use with other Linked Data technologies like SPARQL. Developers who
   require any of the facilities listed above or need to serialize an RDF Graph
   or RDF Dataset in a JSON-based syntax will find JSON-LD of interest. People
   intending to use JSON-LD with RDF tools will find it can be used as another
   RDF syntax, like Turtle [<cite><a href="#bib-TURTLE" class="bibref">TURTLE</a></cite>]. Complete details of how JSON-LD relates
   to RDF are in section <a class="sec-ref" href="#relationship-to-rdf"><span class="secno">9.</span> <span class="sec-title">Relationship to RDF</span></a>.
  </p>

  <p>
    The syntax is designed to not disturb already
   deployed systems running on JSON, but provide a smooth upgrade path from
   JSON to JSON-LD. Since the shape of such data varies wildly, JSON-LD
   features mechanisms to reshape documents into a deterministic structure
   which simplifies their processing.</p>

  <section id="how-to-read-this-document" class="informative">
    <h3 id="h3_how-to-read-this-document" role="heading" aria-level="2"><span class="secno">1.1 </span>How to Read this Document</h3><p><em>This section is non-normative.</em></p>

    <p>This document is a detailed specification for a serialization of Linked
      Data in JSON. The document is primarily intended for the following audiences:</p>

    <ul>
      <li>Software developers who want to encode Linked Data in a variety of
        programming languages that can use JSON</li>
      <li>Software developers who want to convert existing JSON to JSON-LD</li>
      <li>Software developers who want to understand the design decisions and
        language syntax for JSON-LD</li>
      <li>Software developers who want to implement processors and APIs for
        JSON-LD</li>
      <li>Software developers who want to generate or consume Linked Data,
        an RDF graph, or an RDF Dataset in a JSON syntax</li>
    </ul>

    <p>A companion document, the JSON-LD Processing Algorithms and API specification
      [<cite><a href="#bib-JSON-LD-API" class="bibref">JSON-LD-API</a></cite>], specifies how to work with JSON-LD at a higher level by
      providing a standard library interface for common JSON-LD operations.</p>

    <p>To understand the basics in this specification you must first be familiar with
      JSON, which is detailed in [<cite><a href="#bib-RFC4627" class="bibref">RFC4627</a></cite>].</p>

    <p>This document almost exclusively uses the term <abbr title="Internationalized Resource Identifier">IRI</abbr>
    (<a href="http://www.w3.org/TR/ld-glossary/#internationalized-resource-identifier">Internationalized Resource Indicator</a>)
    when discussing hyperlinks. Many Web developers are more familiar with the
    URL (<a href="http://www.w3.org/TR/ld-glossary/#uniform-resource-locator">Uniform Resource Locator</a>)
    terminology. The document also uses, albeit rarely, the URI
    (<a href="http://www.w3.org/TR/ld-glossary/#uniform-resource-identifier">Uniform Resource Indicator</a>)
    terminology. While these terms are often used interchangeably among
    technical communities, they do have important distinctions from one
    another and the specification goes to great lengths to try and use the
    proper terminology at all times.
    </p>
  </section>
</section>

<section id="design-goals-and-rationale" class="informative">
  <!--OddPage--><h2 id="h2_design-goals-and-rationale" role="heading" aria-level="1"><span class="secno">2. </span>Design Goals and Rationale</h2><p><em>This section is non-normative.</em></p>

  <p>JSON-LD satisfies the following design goals:</p>

  <dl>
   <dt>Simplicity</dt>
   <dd>No extra processors or software libraries are necessary to use JSON-LD
     in its most basic form. The language provides developers with a very easy
     learning curve. Developers only need to know JSON and two
     <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a> (<code>@context</code>
     and <code>@id</code>) to use the basic functionality in JSON-LD.</dd>
   <dt>Compatibility</dt>
   <dd>A JSON-LD document is always a valid JSON document. This ensures that
    all of the standard JSON libraries work seamlessly with JSON-LD documents.</dd>
   <dt>Expressiveness</dt>
   <dd>The syntax serializes directed graphs. This ensures that almost
    every real world data model can be expressed.</dd>
   <dt>Terseness</dt>
   <dd>The JSON-LD syntax is very terse and human readable, requiring as
    little effort as possible from the developer.</dd>
   <dt>Zero Edits, most of the time</dt>
   <dd>JSON-LD ensures a smooth and simple transition from existing
     JSON-based systems. In many cases,
     zero edits to the JSON document and the addition of one line to the HTTP response
     should suffice (see <a class="sectionRef sec-ref" href="#interpreting-json-as-json-ld">section 6.8 Interpreting JSON as JSON-LD</a>).
     This allows organizations that have
     already deployed large JSON-based infrastructure to use JSON-LD's features
     in a way that is not disruptive to their day-to-day operations and is
     transparent to their current customers. However, there are times where
     mapping JSON to a graph representation is a complex undertaking.
     In these instances, rather than extending JSON-LD to support
     esoteric use cases, we chose not to support the use case. While Zero
     Edits is a design goal, it is not always possible without adding
     great complexity to the language. JSON-LD focuses on simplicity when
     possible.</dd>
    <dt>Usable as RDF</dt>
    <dd>JSON-LD is usable by developers as
      idiomatic JSON, with no need to understand RDF [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>].
      JSON-LD is also usable as RDF, so people intending to use JSON-LD
      with RDF tools will find it can be used like any other RDF syntax.
      Complete details of how JSON-LD relates to RDF are in section
      <a class="sec-ref" href="#relationship-to-rdf"><span class="secno">9.</span> <span class="sec-title">Relationship to RDF</span></a>.</dd>
  </dl>
</section>

<section id="terminology" class="normative">
  <!--OddPage--><h2 id="h2_terminology" role="heading" aria-level="1"><span class="secno">3. </span>Terminology</h2>

  <section id="general-terminology" class="normative">
    <h3 id="h3_general-terminology" role="heading" aria-level="2"><span class="secno">3.1 </span>General Terminology</h3>

    <p>This document uses the following terms as defined in JSON [<cite><a href="#bib-RFC4627" class="bibref">RFC4627</a></cite>]. Refer
      to the <em>JSON Grammar</em> section in [<cite><a href="#bib-RFC4627" class="bibref">RFC4627</a></cite>] for formal definitions.</p>

    <dl>
      <dt><dfn id="dfn-json-object" title="json-object">JSON object</dfn></dt><dd>
        An object structure is represented as a pair of curly brackets surrounding
        zero or more key-value pairs. A key is a <a href="#dfn-string" title="string" class="tref internalDFN">string</a>.
        A single colon comes after each key, separating the key from the value.
        A single comma separates a value from a following key. In contrast to JSON,
        in JSON-LD the keys in an object must be unique.</dd>
      <dt><dfn id="dfn-array" title="array">array</dfn></dt>
      <dd>An array structure is represented as square brackets surrounding zero
        or more values. Values are separated by commas.
        In JSON, an array is an <em>ordered</em> sequence of zero or more values.
        While JSON-LD uses the same array representation as JSON,
        the collection is <em>unordered</em> by default. While order is
        preserved in regular JSON arrays, it is not in regular JSON-LD arrays
        unless specifically defined (see <a class="sectionRef sec-ref" href="#sets-and-lists">section 6.11 Sets and Lists</a>).</dd>
      <dt><dfn id="dfn-string" title="string">string</dfn></dt><dd>
        A string is a sequence of zero or more Unicode characters,
        wrapped in double quotes, using backslash escapes (if necessary).</dd>
      <dt><dfn id="dfn-number" title="number">number</dfn></dt>
      <dd>A number is similar to that used in most programming languages, except
        that the octal and hexadecimal formats are not used and leading zeros
        are not allowed.</dd>
      <dt><dfn id="dfn-true" title="true">true</dfn> and <dfn id="dfn-false" title="false">false</dfn></dt><dd>
        Values that are used to express one of two possible boolean states.</dd>
      <dt><dfn id="dfn-null" title="null">null</dfn></dt>
      <dd>The <a href="#dfn-null" title="null" class="tref internalDFN">null</a> value, which is typically used to clear or forget
        data. For example, a key-value pair in the
        <code>@context</code> where the value is <a href="#dfn-null" title="null" class="tref internalDFN">null</a> explicitly
        decouples a <a href="#dfn-term" title="term" class="tref internalDFN">term</a>'s association with an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
        A key-value pair in the body of a JSON-LD document whose
        value is <a href="#dfn-null" title="null" class="tref internalDFN">null</a> has the same meaning as if the key-value pair
        was not defined. If <code>@value</code>, <code>@list</code>, or
        <code>@set</code> is set to <a href="#dfn-null" title="null" class="tref internalDFN">null</a> in expanded form, then
        the entire <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> is ignored.</dd>
    </dl>
  </section>

  <section id="data-model-overview" class="informative">
    <h3 id="h3_data-model-overview" role="heading" aria-level="2"><span class="secno">3.2 </span>Data Model Overview</h3><p><em>This section is non-normative.</em></p>

    <p>Generally speaking, the data model used for JSON-LD is a labeled,
      directed <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a>. The graph contains
      <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a>, which are connected by
      <a href="#dfn-edge" title="edge" class="tref internalDFN">edges</a>. A <a href="#dfn-node" title="node" class="tref internalDFN">node</a> is typically data
      such as a <a href="#dfn-string" title="string" class="tref internalDFN">string</a>, <a href="#dfn-number" title="number" class="tref internalDFN">number</a>,
      <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed values</a> (like dates and times)
      or an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
      There is also a special class of <a href="#dfn-node" title="node" class="tref internalDFN">node</a> called a
      <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a>, which is typically used to express data that does
      not have a global identifier like an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
      <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">Blank nodes</a> are identified using a
      <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>. This simple data model is incredibly
      flexible and powerful, capable of modeling almost any kind of
      data. For a deeper explanation of the data model, see
      section <a class="sec-ref" href="#data-model"><span class="secno">7.</span> <span class="sec-title">Data Model</span></a>.
    </p>

    <p>Developers who are familiar with Linked Data technologies will
    recognize the data model as the RDF Data Model. To dive deeper into how
    JSON-LD and RDF are related, see
    section <a class="sec-ref" href="#relationship-to-rdf"><span class="secno">9.</span> <span class="sec-title">Relationship to RDF</span></a>.
    </p>
  </section>

  <section id="syntax-tokens-and-keywords" class="normative">
    <h3 id="h3_syntax-tokens-and-keywords" role="heading" aria-level="2"><span class="secno">3.3 </span>Syntax Tokens and Keywords</h3>

    <p>JSON-LD specifies a number of syntax tokens and <dfn id="dfn-keyword" title="keyword">keywords</dfn>
    that are a core part of the language:</p>

    <dl>
      <dt><code>@context</code></dt>
      <dd>Used to define the short-hand names that are used throughout a JSON-LD
        document. These short-hand names are called <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> and help
        developers to express specific identifiers in a compact manner. The
        <code>@context</code> keyword is described in detail in
        <a class="sectionRef sec-ref" href="#the-context">section 5.1 The Context</a>.</dd>
      <dt><code>@id</code></dt>
      <dd>Used to uniquely identify <em>things</em> that are being described in the document
        with <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> or
        <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifiers</a>. This keyword
        is described in <a class="sectionRef sec-ref" href="#node-identifiers">section 5.3 Node Identifiers</a>.</dd>
      <dt><code>@value</code></dt>
      <dd>Used to specify the data that is associated with a particular
        <a href="#dfn-property" title="property" class="tref internalDFN">property</a> in the graph. This keyword is described in
        <a class="sectionRef sec-ref" href="#string-internationalization">section 6.9 String Internationalization</a> and
        <a class="sectionRef sec-ref" href="#typed-values">section 6.4 Typed Values</a>.</dd>
      <dt><code>@language</code></dt>
      <dd>Used to specify the language for a particular string value or the default
        language of a JSON-LD document. This keyword is described in
        <a class="sectionRef sec-ref" href="#string-internationalization">section 6.9 String Internationalization</a>.</dd>
      <dt><code>@type</code></dt>
      <dd>Used to set the data type of a <a href="#dfn-node" title="node" class="tref internalDFN">node</a> or
        <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed value</a>. This keyword is described in
        <a class="sectionRef sec-ref" href="#typed-values">section 6.4 Typed Values</a>.</dd>
      <dt><code>@container</code></dt>
      <dd>Used to set the default container type for a <a href="#dfn-term" title="term" class="tref internalDFN">term</a>.
        This keyword is described in <a class="sectionRef sec-ref" href="#sets-and-lists">section 6.11 Sets and Lists</a>.</dd>
      <dt><code>@list</code></dt>
      <dd>Used to express an ordered set of data.
        This keyword is described in <a class="sectionRef sec-ref" href="#sets-and-lists">section 6.11 Sets and Lists</a>.</dd>
      <dt><code>@set</code></dt>
      <dd>Used to express an unordered set of data and to ensure that values are always
         represented as arrays. This keyword is described in
         <a class="sectionRef sec-ref" href="#sets-and-lists">section 6.11 Sets and Lists</a>.</dd>
      <dt><code>@reverse</code></dt>
      <dd>Used to express reverse properties. This keyword is described in
        <a class="sectionRef sec-ref" href="#reverse-properties">section 6.12 Reverse Properties</a>.</dd>
      <dt><code>@index</code></dt>
      <dd>Used to specify that a container is used to index information and
        that processing should continue deeper into a JSON data structure.
        This keyword is described in <a class="sectionRef sec-ref" href="#data-indexing">section 6.16 Data Indexing</a>.</dd>
      <dt><code>@base</code></dt>
      <dd>Used to set the base <abbr title="Internationalized Resource Identifier">IRI</abbr> against which <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative IRIs</a>
        are resolved. This keyword is described in <a class="sectionRef sec-ref" href="#base-iri">section 6.1 Base IRI</a>.</dd>
      <dt><code>@vocab</code></dt>
      <dd>Used to expand properties and values in <code>@type</code> with a common prefix
        <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. This keyword is described in <a class="sectionRef sec-ref" href="#default-vocabulary">section 6.2 Default Vocabulary</a>.</dd>
      <dt><code>@graph</code></dt><dd>Used to express a <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a>.
        This keyword is described in <a class="sectionRef sec-ref" href="#named-graphs">section 6.13 Named Graphs</a>.</dd>
      <dt><code>:</code></dt>
      <dd>The separator for JSON keys and values that use
        <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact IRIs</a>.</dd>
    </dl>

    <p>All keys, <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a>, and values in JSON-LD are case-sensitive.</p>
  </section>
</section>

<section id="conformance" class="normative">
  <!--OddPage--><h2 id="h2_conformance" role="heading" aria-level="1"><span class="secno">4. </span>Conformance</h2>

  <p>This specification describes the conformance criteria for JSON-LD documents.
    This criteria is relevant to authors and authoring tool implementers. As well
    as sections marked as non-normative, all authoring guidelines, diagrams, examples,
    and notes in this specification are non-normative. Everything else in this
    specification is normative.</p>

  <p>A <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD document</a> complies with this specification if it follows
    the normative statements in appendix <a class="sec-ref" href="#json-ld-grammar"><span class="secno">8.</span> <span class="sec-title">JSON-LD Grammar</span></a>. JSON documents
    can be interpreted as JSON-LD by following the normative statements in
    <a class="sectionRef sec-ref" href="#interpreting-json-as-json-ld">section 6.8 Interpreting JSON as JSON-LD</a>. For convenience, normative
    statements for documents are often phrased as statements on the properties of the document.</p>

  <p>The key words <em title="MUST" class="rfc2119">MUST</em>, <em title="MUST NOT" class="rfc2119">MUST NOT</em>, <em title="REQUIRED" class="rfc2119">REQUIRED</em>, <em title="SHALL" class="rfc2119">SHALL</em>, <em title="SHALL NOT" class="rfc2119">SHALL NOT</em>, <em title="SHOULD" class="rfc2119">SHOULD</em>, <em title="SHOULD NOT" class="rfc2119">SHOULD NOT</em>,
    <em title="RECOMMENDED" class="rfc2119">RECOMMENDED</em>, <em title="NOT RECOMMENDED" class="rfc2119">NOT RECOMMENDED</em>, <em title="MAY" class="rfc2119">MAY</em>, and <em title="OPTIONAL" class="rfc2119">OPTIONAL</em> in this specification have the
    meaning defined in [<cite><a href="#bib-RFC2119" class="bibref">RFC2119</a></cite>].</p>
</section>

<section id="basic-concepts" class="informative">
  <!--OddPage--><h2 id="h2_basic-concepts" role="heading" aria-level="1"><span class="secno">5. </span>Basic Concepts</h2><p><em>This section is non-normative.</em></p>

  <p>JSON [<cite><a href="#bib-RFC4627" class="bibref">RFC4627</a></cite>] is a lightweight, language-independent data interchange format.
    It is easy to parse and easy to generate. However, it is difficult to integrate JSON
    from different sources as the data may contain keys that conflict with other
    data sources. Furthermore, JSON has no
    built-in support for hyperlinks, which are a fundamental building block on
    the Web. Let's start by looking at an example that we will be using for the
    rest of this section:</p>

  <div class="example"><div class="example-title"><span>Example 1</span>: Sample JSON document</div><pre class="example">{
  "name": "Manu Sporny",
  "homepage": "http://manu.sporny.org/",
  "image": "http://manu.sporny.org/images/manu.png"
}</pre></div>

  <p>It's obvious to humans that the data is about a person whose
    <code>name</code> is "Manu Sporny"
    and that the <code>homepage</code> property contains the URL of that person's homepage.
    A machine doesn't have such an intuitive understanding and sometimes,
    even for humans, it is difficult to resolve ambiguities in such representations. This problem
    can be solved by using unambiguous identifiers to denote the different concepts instead of
    tokens such as "name", "homepage", etc.</p>

  <p>Linked Data, and the Web in general, uses <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>
    (Internationalized Resource Identifiers as described in [<cite><a href="#bib-RFC3987" class="bibref">RFC3987</a></cite>]) for unambiguous
    identification. The idea is to use <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>
    to assign unambiguous identifiers to data that may be of use to other developers.
    It is useful for <a href="#dfn-term" title="term" class="tref internalDFN">terms</a>,
    like <code>name</code> and <code>homepage</code>, to expand to <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>
    so that developers don't accidentally step on each other's terms. Furthermore, developers and
    machines are able to use this <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> (by using a web browser, for instance) to go to
    the term and get a definition of what the term means. This process is known as <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
    dereferencing.</p>

  <p>Leveraging the popular <a href="http://schema.org/">schema.org vocabulary</a>,
    the example above could be unambiguously expressed as follows:</p>

  <div class="example"><div class="example-title"><span>Example 2</span>: Sample JSON-LD document using full IRIs instead of terms</div><pre class="example">{
  "<span class="highlight">http://schema.org/name</span>": "Manu Sporny",
  "<span class="highlight">http://schema.org/url</span>": <span class="highlight">{ "@id": </span>"http://manu.sporny.org/" <span class="highlight">}</span>,  <span class="comment">← The '@id' keyword means 'This value is an identifier that is an IRI'</span>
  "<span class="highlight">http://schema.org/image</span>": <span class="highlight">{ "@id": </span>"http://manu.sporny.org/images/manu.png" <span class="highlight">}</span>
}</pre></div>

  <p>In the example above, every property is unambiguously identified by an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> and all values
    representing <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> are explicitly marked as such by the
    <code>@id</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>. While this is a valid JSON-LD
    document that is very specific about its data, the document is also overly verbose and difficult
    to work with for human developers. To address this issue, JSON-LD introduces the notion
    of a <a href="#dfn-context" title="context" class="tref internalDFN">context</a> as described in the next section.</p>

  <section id="the-context" class="informative">
    <h3 id="h3_the-context" role="heading" aria-level="2"><span class="secno">5.1 </span>The Context</h3><p><em>This section is non-normative.</em></p>

    <p>When two people communicate with one another, the conversation takes
    place in a shared environment, typically called
    "the context of the conversation". This shared context allows the
    individuals to use shortcut terms, like the first name of a mutual friend,
    to communicate more quickly but without losing accuracy. A context in
    JSON-LD works in the same way. It allows two applications to use shortcut
    terms to communicate with one another more efficiently, but without
    losing accuracy.</p>

    <p>Simply speaking, a <dfn id="dfn-context" title="context">context</dfn> is used to map <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> to
      <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>. <a href="#dfn-term" title="term" class="tref internalDFN">Terms</a> are case sensitive
      and any valid <a href="#dfn-string" title="string" class="tref internalDFN">string</a> that is not a reserved JSON-LD <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>
      can be used as a <a href="#dfn-term" title="term" class="tref internalDFN">term</a>.</p>

    <p>For the sample document in the previous section, a <a href="#dfn-context" title="context" class="tref internalDFN">context</a> would
      look something like this:</p>

    <div class="example"><div class="example-title"><span>Example 3</span>: Context for the sample document in the previous section</div><pre class="example">{
  <span class="highlight">"@context":
  {
    "name": "http://schema.org/name",</span>  <span class="comment">← This means that 'name' is shorthand for 'http://schema.org/name'</span> <span class="highlight">
    "image": {
      "@id": "http://schema.org/image",</span>  <span class="comment">← This means that 'image' is shorthand for 'http://schema.org/image'</span> <span class="highlight">
      "@type": "@id"</span>  <span class="comment">← This means that a string value associated with 'image' should be interpreted as an identifier that is an IRI</span> <span class="highlight">
    },
    "homepage": {
      "@id": "http://schema.org/url",</span>  <span class="comment">← This means that 'homepage' is shorthand for 'http://schema.org/url'</span> <span class="highlight">
      "@type": "@id"</span>  <span class="comment">← This means that a string value associated with 'homepage' should be interpreted as an identifier that is an IRI</span> <span class="highlight">
    }
  }</span>
}</pre></div>

    <p>As the <a href="#dfn-context" title="context" class="tref internalDFN">context</a> above shows, the value of a <dfn id="dfn-term-definition" title="term-definition">term definition</dfn> can
      either be a simple string, mapping the <a href="#dfn-term" title="term" class="tref internalDFN">term</a> to an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
      or a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>.</p>

    <p>When a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> is associated with a term, it is called
      an <dfn id="dfn-expanded-term-definition" title="expanded-term-definition">expanded term definition</dfn>. The example above specifies that
      the values of <code>image</code> and <code>homepage</code>, if they are
      strings, are to be interpreted as
      <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>. <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">Expanded term definitions</a>
      also allow terms to be used for <a href="#data-indexing">index maps</a>
      and to specify whether <a href="#dfn-array" title="array" class="tref internalDFN">array</a> values are to be
      interpreted as <a href="#sets-and-lists">sets or lists</a>.
      <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">Expanded term definitions</a> may
      be defined using <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute</a> or
      <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact IRIs</a> as keys, which is
      mainly used to associate type or language information with an
      <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute</a> or <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</p>

    <p><a href="#dfn-context" title="context" class="tref internalDFN">Contexts</a> can either be directly embedded
      into the document or be referenced. Assuming the context document in the previous
      example can be retrieved at <code>http://json-ld.org/contexts/person.jsonld</code>,
      it can be referenced by adding a single line and allows a JSON-LD document to
      be expressed much more concisely as shown in the example below:</p>

    <div class="example"><div class="example-title"><span>Example 4</span>: Referencing a JSON-LD context</div><pre class="example">{
  <span class="highlight">"@context": "http://json-ld.org/contexts/person.jsonld",</span>
  "name": "Manu Sporny",
  "homepage": "http://manu.sporny.org/",
  "image": "http://manu.sporny.org/images/manu.png"
}</pre></div>

    <p>The referenced context not only specifies how the terms map to
      <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> in the Schema.org vocabulary but also
      specifies that string values associated with
      the <code>homepage</code> and <code>image</code> property
      can be interpreted as an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> (<code>"@type": "@id"</code>,
      see <a class="sectionRef sec-ref" href="#iris">section 5.2 IRIs</a> for more details). This information allows developers
      to re-use each other's data without having to agree to how their data will interoperate
      on a site-by-site basis. External JSON-LD context documents may contain extra
      information located outside of the <code>@context</code> key, such as
      documentation about the <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> declared in the
      document. Information contained outside of the <code>@context</code> value
      is ignored when the document is used as an external JSON-LD context document.</p>

    <p>JSON documents can be interpreted as JSON-LD without having to be modified by
      referencing a <a href="#dfn-context" title="context" class="tref internalDFN">context</a> via an HTTP Link Header
      as described in <a class="sectionRef sec-ref" href="#interpreting-json-as-json-ld">section 6.8 Interpreting JSON as JSON-LD</a>. It is also
      possible to apply a custom context using the JSON-LD API [<cite><a href="#bib-JSON-LD-API" class="bibref">JSON-LD-API</a></cite>].</p>

    <p>In <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD documents</a>,
      <a href="#dfn-context" title="context" class="tref internalDFN">contexts</a> may also be specified inline.
      This has the advantage that documents can be processed even in the
      absence of a connection to the Web. Ultimately, this is a modeling decision
      and different use cases may require different handling.</p>

    <div class="example"><div class="example-title"><span>Example 5</span>: In-line context definition</div><pre class="example">{
  <span class="highlight">"@context":
  {
    "name": "http://schema.org/name",
    "image": {
      "@id": "http://schema.org/image",
      "@type": "@id"
    },
    "homepage": {
      "@id": "http://schema.org/url",
      "@type": "@id"
    }
  },</span>
  "name": "Manu Sporny",
  "homepage": "http://manu.sporny.org/",
  "image": "http://manu.sporny.org/images/manu.png"
}</pre></div>

    <p>This section only covers the most basic features of the JSON-LD
    Context. More advanced features related to the JSON-LD Context are covered
    in section <a class="sec-ref" href="#advanced-concepts"><span class="secno">6.</span> <span class="sec-title">Advanced Concepts</span></a>.
    </p>
  </section>

<section id="iris" class="informative">
  <h3 id="h3_iris" role="heading" aria-level="2"><span class="secno">5.2 </span>IRIs</h3><p><em>This section is non-normative.</em></p>

  <p><a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> (Internationalized Resource Identifiers
    [<cite><a href="#bib-RFC3987" class="bibref">RFC3987</a></cite>]) are fundamental to Linked Data as that is how most
    <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a> and <a href="#dfn-property" title="property" class="tref internalDFN">properties</a>
    are identified. In JSON-LD, IRIs may be represented as an
    <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>. An
    <dfn id="dfn-absolute-iri" title="absolute-iri">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn> is defined in [<cite><a href="#bib-RFC3987" class="bibref">RFC3987</a></cite>] as containing a
    <em>scheme</em> along with <em>path</em> and optional <em>query</em> and
    <em>fragment</em> segments. A <dfn id="dfn-relative-iri" title="relative-iri">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn> is an <abbr title="Internationalized Resource Identifier">IRI</abbr>
    that is relative to some other <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
    In JSON-LD all <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative IRIs</a> are resolved
    relative to the <dfn id="dfn-base-iri" title="base-iri">base <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn>.</p>

  <p>A <a href="#dfn-string" title="string" class="tref internalDFN">string</a> is interpreted as an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> when it is the
    value of an <code>@id</code> member:</p>

  <div class="example"><div class="example-title"><span>Example 6</span>: Values of @id are interpreted as IRI</div><pre class="example">{
...
  "homepage": { "<span class="highlight">@id</span>": "http://example.com/" }
...
}</pre></div>

  <p>Values that are interpreted as <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>, can also be
    expressed as <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative IRIs</a>. For example,
    assuming that the following document is located at
    <code>http://example.com/about/</code>, the <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
    <code>../</code> would expand to <code>http://example.com/</code> (for more
    information on where  <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative IRIs</a> can be
    used, please refer to section <a class="sec-ref" href="#json-ld-grammar"><span class="secno">8.</span> <span class="sec-title">JSON-LD Grammar</span></a>).</p>

  <div class="example"><div class="example-title"><span>Example 7</span>: IRIs can be relative</div><pre class="example">{
...
  "homepage": { "<span class="highlight">@id</span>": "../" }
...
}</pre></div>

  <p><a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">Absolute IRIs</a> can be expressed directly
    in the key position like so:</p>

  <div class="example"><div class="example-title"><span>Example 8</span>: IRI as a key</div><pre class="example">{
...
  "<span class="highlight">http://schema.org/name</span>": "Manu Sporny",
...
}</pre></div>

  <p>In the example above, the key <code>http://schema.org/name</code>
    is interpreted as an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</p>

  <p>Term-to-<abbr title="Internationalized Resource Identifier">IRI</abbr> expansion occurs if the key matches a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> defined
    within the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>:</p>

  <div class="example"><div class="example-title"><span>Example 9</span>: Term expansion from context definition</div><pre class="example">{
  "<span class="highlight">@context</span>":
  {
    "<span class="highlight">name</span>": "<span class="highlight">http://schema.org/name</span>"
  },
  "<span class="highlight">name</span>": "Manu Sporny",
  "status": "trollin'"
}</pre></div>

  <p>JSON keys that do not expand to an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, such as <code>status</code>
    in the example above, are not Linked Data and thus ignored when processed.</p>

  <p>If type <a href="#dfn-coercion" title="coercion" class="tref internalDFN">coercion</a> rules are specified in the <code>@context</code> for
    a particular <a href="#dfn-term" title="term" class="tref internalDFN">term</a> or property <abbr title="Internationalized Resource Identifier">IRI</abbr>, an <abbr title="Internationalized Resource Identifier">IRI</abbr> is generated:</p>

  <div class="example"><div class="example-title"><span>Example 10</span>: Type coercion</div><pre class="example">{<span class="highlight">
  "@context":
  {
    ...
    "homepage":
    {
      "@id": "http://schema.org/url",
      "@type": "@id"
    }
    ...
  }</span>
...
  "homepage": "http://manu.sporny.org/",
...
}</pre></div>

  <p>In the example above, since the value <code>http://manu.sporny.org/</code>
    is expressed as a JSON <a href="#dfn-string" title="string" class="tref internalDFN">string</a>, the type <a href="#dfn-coercion" title="coercion" class="tref internalDFN">coercion</a>
    rules will transform the value into an <abbr title="Internationalized Resource Identifier">IRI</abbr> when processing the data.
    See <a class="sectionRef sec-ref" href="#type-coercion">section 6.5 Type Coercion</a> for more
    details about this feature.</p>

  <p>In summary, <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> can be expressed in a variety of
    different ways in JSON-LD:</p>

  <ol>
    <li><a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> keys that have a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> mapping in
      the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> expand to an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
      (only applies outside of the <a href="#dfn-context-definition" title="context-definition" class="tref internalDFN">context definition</a>).</li>
    <li>An <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is generated for the <a href="#dfn-string" title="string" class="tref internalDFN">string</a> value specified using
      <code>@id</code> or <code>@type</code>.</li>
    <li>An <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> is generated for the <a href="#dfn-string" title="string" class="tref internalDFN">string</a> value of any key for which there
      are <a href="#dfn-coercion" title="coercion" class="tref internalDFN">coercion</a> rules that contain a <code>@type</code> key that is
      set to a value of <code>@id</code> or <code>@vocab</code>.</li>
  </ol>

  <p>This section only covers the most basic features associated with IRIs
  in JSON-LD. More advanced features related to IRIs are covered in
  section <a class="sec-ref" href="#advanced-concepts"><span class="secno">6.</span> <span class="sec-title">Advanced Concepts</span></a>.
  </p>

</section>

<section id="node-identifiers" class="informative">
  <h3 id="h3_node-identifiers" role="heading" aria-level="2"><span class="secno">5.3 </span>Node Identifiers</h3><p><em>This section is non-normative.</em></p>

  <p>To be able to externally reference <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a>
    in a <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a>, it is important that
    <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a> have an identifier. <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>
    are a fundamental concept of Linked Data, for
    <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a> to be truly linked, dereferencing the
    identifier should result in a representation of that <a href="#dfn-node" title="node" class="tref internalDFN">node</a>.
    This may allow an application to retrieve further information about a
    <a href="#dfn-node" title="node" class="tref internalDFN">node</a>.</p>

  <p>In JSON-LD, a <a href="#dfn-node" title="node" class="tref internalDFN">node</a> is identified using the <code>@id</code>
    <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>:</p>

  <div class="example"><div class="example-title"><span>Example 11</span>: Identifying a node</div><pre class="example">{
  "@context":
  {
    ...
    "name": "http://schema.org/name"
  },
  <span class="highlight">"@id": "http://me.markus-lanthaler.com/"</span>,
  "name": "Markus Lanthaler",
  ...
}</pre></div>

  <p>The example above contains a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> identified by the <abbr title="Internationalized Resource Identifier">IRI</abbr>
    <code>http://me.markus-lanthaler.com/</code>.</p>

  <p>This section only covers the most basic features associated with
  node identifiers in JSON-LD. More advanced features related to
  node identifiers are covered in section <a class="sec-ref" href="#advanced-concepts"><span class="secno">6.</span> <span class="sec-title">Advanced Concepts</span></a>.
  </p>

</section>

<section id="specifying-the-type" class="informative">
<h3 id="h3_specifying-the-type" role="heading" aria-level="2"><span class="secno">5.4 </span>Specifying the Type</h3><p><em>This section is non-normative.</em></p>

<p>The type of a particular node can be specified using the <code>@type</code>
  <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>. In Linked Data, types are uniquely
  identified with an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</p>

<div class="example"><div class="example-title"><span>Example 12</span>: Specifying the type for a node</div><pre class="example">{
...
  "@id": "http://example.org/places#BrewEats",
  "<span class="highlight">@type</span>": "<span class="highlight">http://schema.org/Restaurant</span>",
...
}</pre></div>

<p>A node can be assigned more than one type by using an <a href="#dfn-array" title="array" class="tref internalDFN">array</a>:</p>

<div class="example"><div class="example-title"><span>Example 13</span>: Specifying multiple types for a node</div><pre class="example">{
...
  "@id": "http://example.org/places#BrewEats",
  "<span class="highlight">@type</span>": <span class="highlight">[ "http://schema.org/Restaurant", "http://schema.org/Brewery" ],</span>
...
}</pre></div>

<p>The value of a <code>@type</code> key may also be a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> defined in the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>:</p>
<div class="example"><div class="example-title"><span>Example 14</span>: Using a term to specify the type</div><pre class="example">{
  "@context": {
    ...
    <span class="highlight">"Restaurant": "http://schema.org/Restaurant", </span>
    <span class="highlight">"Brewery": "http://schema.org/Brewery"</span>
  }
  "@id": "http://example.org/places#BrewEats",
  <span class="highlight">"@type": [ "Restaurant", "Brewery" ]</span>,
  ...
}</pre></div>

<div class="note"><div id="h_note_1" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">This section only covers the most basic features associated with
  types in JSON-LD. It is worth noting that the <code>@type</code>
  <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> is not only used to specify the type of a
  <a href="#dfn-node" title="node" class="tref internalDFN">node</a> but also to express <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed values</a>
  (as described in <a class="sectionRef sec-ref" href="#typed-values">section 6.4 Typed Values</a>) and to
  <a href="#dfn-coercion" title="coercion" class="tref internalDFN">type coerce</a> values (as described in
  <a class="sectionRef sec-ref" href="#type-coercion">section 6.5 Type Coercion</a>). Specifically, <code>@type</code>
  cannot be used in a <a href="#dfn-context" title="context" class="tref internalDFN">context</a> to define a <a href="#dfn-node" title="node" class="tref internalDFN">node's</a>
  type. For a detailed description of the differences, please refer to
  <a class="sectionRef sec-ref" href="#typed-values">section 6.4 Typed Values</a>.</p></div>

</section>
</section>

<section id="advanced-concepts" class="normative">
<!--OddPage--><h2 id="h2_advanced-concepts" role="heading" aria-level="1"><span class="secno">6. </span>Advanced Concepts</h2>

<p>JSON-LD has a number of features that provide functionality above and beyond
  the core functionality described above. The following section describes this
  advanced functionality in more detail.</p>

<section id="base-iri" class="informative">
  <h3 id="h3_base-iri" role="heading" aria-level="2"><span class="secno">6.1 </span>Base <abbr title="Internationalized Resource Identifier">IRI</abbr></h3><p><em>This section is non-normative.</em></p>

  <p>JSON-LD allows <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>s to be specified in a relative form which is
    resolved against the document base according
    <cite><a href="http://tools.ietf.org/html/rfc3986#section-5.1">section 5.1 Establishing a Base URI</a></cite>
    of [<cite><a href="#bib-RFC3986" class="bibref">RFC3986</a></cite>]. The base <abbr title="Internationalized Resource Identifier">IRI</abbr> may be explicitly set with a <a href="#dfn-context" title="context" class="tref internalDFN">context</a>
    using the <code>@base</code> keyword.</p>

  <p>For example, if a JSON-LD document was retrieved from <code>http://example.com/document.jsonld</code>,
    relative IRIs would resolve against that <abbr title="Internationalized Resource Identifier">IRI</abbr>:</p>

  <div class="example"><div class="example-title"><span>Example 15</span>: Use a relative IRI as node identifier</div><pre class="example">{
  "@context": {
    "label": "http://www.w3.org/2000/01/rdf-schema#label"
  },
  <span class="highlight">"@id": ""</span>,
  "label": "Just a simple document"
}</pre></div>

  <p>This document uses an empty <code>@id</code>, which resolves to the document base.
    However, if the document is moved to a different location, the <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> would change.
    To prevent this without having to use an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-context" title="context" class="tref internalDFN">context</a>
    may define a <code>@base</code> mapping, to overwrite the base <abbr title="Internationalized Resource Identifier">IRI</abbr> for the document.</p>

  <div class="example"><div class="example-title"><span>Example 16</span>: Setting the document base in a document</div><pre class="example">{
  "@context": {
    <span class="highlight">"@base": "http://example.com/document.jsonld"</span>
  },
  "@id": "",
  "label": "Just a simple document"
}</pre></div>

  <p>Setting <code>@base</code> to <a href="#dfn-null" title="null" class="tref internalDFN">null</a> will prevent
    <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative IRIs</a> to be expanded to
    <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute IRIs</a>.</p>

  <p>Please note that the <code>@base</code> will be ignored if used in
    external contexts.</p>
</section>

<section id="default-vocabulary" class="informative">
  <h3 id="h3_default-vocabulary" role="heading" aria-level="2"><span class="secno">6.2 </span>Default Vocabulary</h3><p><em>This section is non-normative.</em></p>

  <p>At times, all properties and types may come from the same vocabulary. JSON-LD's
    <code>@vocab</code> keyword allows an author to set a common prefix to be used
    for all properties and types that do not match a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> and are neither
    a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> nor an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> (i.e., they do
    not contain a colon).</p>

  <div class="example"><div class="example-title"><span>Example 17</span>: Using a common vocabulary prefix</div><pre class="example">{
  "@context": {
    <span class="highlight">"@vocab": "http://schema.org/"</span>
  }
  "@id": "http://example.org/places#BrewEats",
  "@type": <span class="highlight">"Restaurant"</span>,
  <span class="highlight">"name"</span>: "Brew Eats"
  ...
}</pre></div>

  <p>If <code>@vocab</code> is used but certain keys in an
    <a href="#dfn-json-object" title="json-object" class="tref internalDFN">object</a> should not be expanded using
    the vocabulary <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> can be explicitly set
    to <a href="#dfn-null" title="null" class="tref internalDFN">null</a> in the <a href="#dfn-context" title="context" class="tref internalDFN">context</a>. For instance, in the
    example below the <code>databaseId</code> member would not expand to an
    <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</p>

  <div class="example"><div class="example-title"><span>Example 18</span>: Using the null keyword to ignore data</div><pre class="example">{
  "@context":
  {
     "@vocab": "http://schema.org/",
     <span class="highlight">"databaseId": null</span>
  },
    "@id": "http://example.org/places#BrewEats",
    "@type": "Restaurant",
    "name": "Brew Eats",
    <span class="highlight">"databaseId"</span>: "23987520"
}</pre></div>
</section>

<section id="compact-iris" class="informative">
  <h3 id="h3_compact-iris" role="heading" aria-level="2"><span class="secno">6.3 </span>Compact IRIs</h3><p><em>This section is non-normative.</em></p>

  <p>A <dfn id="dfn-compact-iri" title="compact-iri">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></dfn> is a way of expressing an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
    using a <em>prefix</em> and <em>suffix</em> separated by a colon (<code>:</code>).
    The <dfn id="dfn-prefix" title="prefix">prefix</dfn> is a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> taken from the
    <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> and is a short string identifying a
    particular <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> in a JSON-LD document. For example, the
    prefix <code>foaf</code> may be used as a short hand for the
    Friend-of-a-Friend vocabulary, which is identified using the <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
    <code>http://xmlns.com/foaf/0.1/</code>. A developer may append
    any of the FOAF vocabulary terms to the end of the prefix to specify a short-hand
    version of the <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> for the vocabulary term. For example,
    <code>foaf:name</code> would be expanded to the <abbr title="Internationalized Resource Identifier">IRI</abbr>
    <code>http://xmlns.com/foaf/0.1/name</code>.</p>

  <div class="example"><div class="example-title"><span>Example 19</span>: Prefix expansion</div><pre class="example">{
  "<span class="highlight">@context</span>":
  {
    "<span class="highlight">foaf</span>": "<span class="highlight">http://xmlns.com/foaf/0.1/</span>"
...
  },
  "@type": "<span class="highlight">foaf:Person</span>"
  "<span class="highlight">foaf:name</span>": "Dave Longley",
...
}</pre></div>

  <p>In the example above, <code>foaf:name</code> expands to the <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
    <code>http://xmlns.com/foaf/0.1/name</code> and <code>foaf:Person</code> expands
    to <code>http://xmlns.com/foaf/0.1/Person</code>.</p>

  <p><a href="#dfn-prefix" title="prefix" class="tref internalDFN">Prefixes</a> are expanded when the form of the value
    is a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> represented as a <code>prefix:suffix</code>
    combination, the <em>prefix</em> matches a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> defined within the
    <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, and the <em>suffix</em> does not begin with two
    slashes&nbsp;(<code>//</code>). The <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> is expanded by
    concatenating the <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> mapped to the <em>prefix</em> to the (possibly empty)
    <em>suffix</em>. If the <em>prefix</em> is not defined in the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>,
    or the suffix begins with two slashes (such as in <code>http://example.com</code>),
    the value is interpreted as <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> instead. If the prefix is an
    underscore (<code>_</code>), the value is interpreted as <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>
    instead.</p>


  <p>It's also possible to use compact IRIs within the context as shown in the
    following example:</p>

  <div class="example"><div class="example-title"><span>Example 20</span>: Using vocabularies</div><pre class="example">{
  "@context":
  {
    "xsd": "http://www.w3.org/2001/XMLSchema#",
    <span class="highlight">"foaf": "http://xmlns.com/foaf/0.1/"</span>,
    <span class="highlight">"foaf:homepage"</span>: { "@type": "@id" },
    "picture": { "@id": <span class="highlight">"foaf:depiction"</span>, "@type": "@id" }
  },
  "@id": "http://me.markus-lanthaler.com/",
  "@type": "foaf:Person",
  "foaf:name": "Markus Lanthaler",
  "foaf:homepage": "http://www.markus-lanthaler.com/",
  "picture": "http://twitter.com/account/profile_image/markuslanthaler"
}</pre></div>
</section>

<section id="typed-values" class="informative">
<h3 id="h3_typed-values" role="heading" aria-level="2"><span class="secno">6.4 </span>Typed Values</h3><p><em>This section is non-normative.</em></p>

<p>
  A value with an associated type, also known as a
  <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed value</a>, is indicated by associating a value with
  an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> which indicates the value's type. Typed values may be
  expressed in JSON-LD in three ways:
</p>

<ol>
  <li>By utilizing the <code>@type</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> when defining
    a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> within a <code>@context</code> section.</li>
  <li>By utilizing a <a href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a>.</li>
  <li>By using a native JSON type such as <a href="#dfn-number" title="number" class="tref internalDFN">number</a>, <a href="#dfn-true" title="true" class="tref internalDFN">true</a>, or <a href="#dfn-false" title="false" class="tref internalDFN">false</a>.</li>
</ol>

<p>The first example uses the <code>@type</code> keyword to associate a
type with a particular <a href="#dfn-term" title="term" class="tref internalDFN">term</a> in the <code>@context</code>:</p>

<div class="example"><div class="example-title"><span>Example 21</span>: Expanded term definition with type coercion</div><pre class="example">{
  <span class="highlight">"@context":
  {
    "modified":
    {
      "@id": "http://purl.org/dc/terms/modified",
      "@type": "http://www.w3.org/2001/XMLSchema#dateTime"
    }
  },</span>
...
  "@id": "http://example.com/docs/1",
  "modified": "2010-05-29T14:17:39+02:00",
...
}</pre></div>

<p>The <em>modified</em> key's value above is automatically type coerced to a
  <em>dateTime</em> value because of the information specified in the
  <code>@context</code>. A JSON-LD processor will interpret the example above
  as follows:</p>

<table class="example">
<thead>
  <tr><th>Subject</th>
  <th>Property</th>
  <th>Value</th>
  <th>Value Type</th>
</tr></thead>
<tbody>
<tr>
  <td>http://example.com/docs/1</td>
  <td>http://purl.org/dc/terms/modified</td>
  <td>2010-05-29T14:17:39+02:00</td>
  <td>http://www.w3.org/2001/XMLSchema#dateTime</td>
</tr>
</tbody>
</table>

<p>The second example uses the expanded form of setting the type information
in the body of a JSON-LD document:</p>

<div class="example"><div class="example-title"><span>Example 22</span>: Expanded value with type</div><pre class="example">{
  "@context":
  {
    "modified":
    {
      "@id": "http://purl.org/dc/terms/modified"
    }
  },
...
  "modified":
  <span class="highlight">{
    "@value": "2010-05-29T14:17:39+02:00",
    "@type": "http://www.w3.org/2001/XMLSchema#dateTime"
  }</span>
...
}</pre></div>

<p>Both examples above would generate the value
  <code>2010-05-29T14:17:39+02:00</code> with the type
  <code>http://www.w3.org/2001/XMLSchema#dateTime</code>. Note that it is
  also possible to use a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> or a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> to
  express the value of a type.</p>

<div class="note"><div id="h_note_2" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">The <code>@type</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> is also used to associate a type
  with a <a href="#dfn-node" title="node" class="tref internalDFN">node</a>. The concept of a <a href="#dfn-node-type" title="node-type" class="tref internalDFN">node type</a> and
  a <a href="#dfn-value-type" title="value-type" class="tref internalDFN">value type</a> are different.</p></div>

<p>A <dfn id="dfn-node-type" title="node-type">node type</dfn> specifies the type of thing
  that is being described, like a person, place, event, or web page. A
  <dfn id="dfn-value-type" title="value-type">value type</dfn> specifies the data type of a particular value, such
  as an integer, a floating point number, or a date.</p>

<div class="example"><div class="example-title"><span>Example 23</span>: Example demonstrating the context-sensitivity for @type</div><pre class="example">{
...
  "@id": "http://example.org/posts#TripToWestVirginia",
  <span class="highlight">"@type": "http://schema.org/BlogPosting"</span>,  <span class="comment">← This is a node type</span>
  "modified":
  {
    "@value": "2010-05-29T14:17:39+02:00",
    <span class="highlight">"@type": "http://www.w3.org/2001/XMLSchema#dateTime"</span>  <span class="comment">← This is a value type</span>
  }
...
}</pre></div>

<p>The first use of <code>@type</code> associates a <a href="#dfn-node-type" title="node-type" class="tref internalDFN">node type</a>
  (<code>http://schema.org/BlogPosting</code>) with the <a href="#dfn-node" title="node" class="tref internalDFN">node</a>,
  which is expressed using the <code>@id</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>.
  The second use of <code>@type</code> associates a <a href="#dfn-value-type" title="value-type" class="tref internalDFN">value type</a>
  (<code>http://www.w3.org/2001/XMLSchema#dateTime</code>) with the
  value expressed using the <code>@value</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>. As a
  general rule, when <code>@value</code> and <code>@type</code> are used in
  the same <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>, the <code>@type</code>
  <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> is expressing a <a href="#dfn-value-type" title="value-type" class="tref internalDFN">value type</a>.
  Otherwise, the <code>@type</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> is expressing a
  <a href="#dfn-node-type" title="node-type" class="tref internalDFN">node type</a>. The example above expresses the following data:</p>

<table class="example">
<thead>
  <tr><th>Subject</th>
  <th>Property</th>
  <th>Value</th>
  <th>Value Type</th>
</tr></thead>
<tbody>
<tr>
  <td>http://example.org/posts#TripToWestVirginia</td>
  <td>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</td>
  <td>http://schema.org/BlogPosting</td>
  <td style="text-align:center;">-</td>
</tr>
<tr>
  <td>http://example.org/posts#TripToWestVirginia</td>
  <td>http://purl.org/dc/terms/modified</td>
  <td>2010-05-29T14:17:39+02:00</td>
  <td>http://www.w3.org/2001/XMLSchema#dateTime</td>
</tr>
</tbody>
</table>

</section>

<section id="type-coercion" class="informative">
<h3 id="h3_type-coercion" role="heading" aria-level="2"><span class="secno">6.5 </span>Type Coercion</h3><p><em>This section is non-normative.</em></p>

<p>JSON-LD supports the coercion of values to particular data types.
Type <dfn id="dfn-coercion" title="coercion">coercion</dfn> allows someone deploying JSON-LD to coerce the incoming or
outgoing values to the proper data type based on a mapping of data type <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> to
<a href="#dfn-term" title="term" class="tref internalDFN">terms</a>. Using type coercion, value representation is preserved without requiring
the data type to be specified with each piece of data.</p>

<p>Type coercion is specified within an <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a>
  using the <code>@type</code> key. The value of this key expands to an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
  Alternatively, the <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a> <code>@id</code> or <code>@vocab</code> may be used
  as value to indicate that within the body of a JSON-LD document, a <a href="#dfn-string" title="string" class="tref internalDFN">string</a> value of a
  <a href="#dfn-term" title="term" class="tref internalDFN">term</a> coerced to <code>@id</code> or <code>@vocab</code> is to be interpreted as an
  <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. The difference between <code>@id</code> and <code>@vocab</code> is how values are expanded
  to <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute IRIs</a>. <code>@vocab</code> first tries to expand the value
  by interpreting it as <a href="#dfn-term" title="term" class="tref internalDFN">term</a>. If no matching <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is found in the
  <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, it tries to expand it as <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
  if there's a colon in the value; otherwise, it will expand the value using the
  <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context's</a> vocabulary mapping, if present, or by interpreting it
  as <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>. Values coerced to <code>@id</code> in contrast are expanded as
  <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> if a colon is present; otherwise, they are interpreted
  as <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</p>

<p><a href="#dfn-term" title="term" class="tref internalDFN">Terms</a> or <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact IRIs</a> used as the value of a
  <code>@type</code> key may be defined within the same context. This means that one may specify a
  <a href="#dfn-term" title="term" class="tref internalDFN">term</a> like <code>xsd</code> and then use <code>xsd:integer</code> within the same
  context definition.</p>

<p>The example below demonstrates how a JSON-LD author can coerce values to
<a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed values</a> and <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>.</p>

<div class="example"><div class="example-title"><span>Example 24</span>: Expanded term definition with types</div><pre class="example">{
  "@context":
  {
    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "name": "http://xmlns.com/foaf/0.1/name",
    "age":
    <span class="highlight">{
      "@id": "http://xmlns.com/foaf/0.1/age",
      "@type": "xsd:integer"
    }</span>,
    "homepage":
    <span class="highlight">{
      "@id": "http://xmlns.com/foaf/0.1/homepage",
      "@type": "@id"
    }</span>
  },
  "@id": "http://example.com/people#john",
  "name": "John Smith",
  "age": <span class="highlight">"41"</span>,
  "homepage":
  <span class="highlight">[
    "http://personal.example.org/",
    "http://work.example.com/jsmith/"
  ]</span>
}</pre></div>

<p>The example shown above would generate the following data.</p>

<table class="example">
<thead>
  <tr><th>Subject</th>
  <th>Property</th>
  <th>Value</th>
  <th>Value Type</th>
</tr></thead>
<tbody>
<tr>
  <td>http://example.com/people#john</td>
  <td>http://xmlns.com/foaf/0.1/name</td>
  <td>John Smith</td>
  <td>&nbsp;</td>
</tr>
<tr>
  <td>http://example.com/people#john</td>
  <td>http://xmlns.com/foaf/0.1/age</td>
  <td>41</td>
  <td>http://www.w3.org/2001/XMLSchema#integer</td>
</tr>
<tr>
  <td rowspan="2">http://example.com/people#john</td>
  <td rowspan="2">http://xmlns.com/foaf/0.1/homepage</td>
  <td>http://personal.example.org/</td>
  <td><a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a></td>
</tr>
<tr>
  <td>http://work.example.com/jsmith/</td>
  <td><a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a></td>
</tr>
</tbody>
</table>

<p>Terms may also be defined using <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute IRIs</a>
  or <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact IRIs</a>. This allows coercion rules
  to be applied to keys which are not represented as a simple <a href="#dfn-term" title="term" class="tref internalDFN">term</a>.
  For example:</p>

<div class="example"><div class="example-title"><span>Example 25</span>: Term definitions using compact and absolute IRIs</div><pre class="example">{
  "@context":
  {
    "foaf": "http://xmlns.com/foaf/0.1/",
    "<span class="highlight">foaf:age</span>":
    {
      <span class="highlight">"@id": "http://xmlns.com/foaf/0.1/age"</span>,
      "@type": "xsd:integer"
    },
    "<span class="highlight">http://xmlns.com/foaf/0.1/homepage</span>":
    {
      "@type": "@id"
    }
  },
  "foaf:name": "John Smith",
  "<span class="highlight">foaf:age</span>": "41",
  "<span class="highlight">http://xmlns.com/foaf/0.1/homepage</span>":
  [
    "http://personal.example.org/",
    "http://work.example.com/jsmith/"
  ]
}</pre></div>

<p>In this case the <code>@id</code> definition in the term definition is optional.
  If it does exist, the <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> representing
  the term will always be expanded to <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> defined by the <code>@id</code>
  key—regardless of whether a prefix is defined or not.</p>

<p>Type coercion is always performed using the unexpanded value of the key. In the
  example above, that means that type coercion is done looking for <code>foaf:age</code>
  in the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> and not for the corresponding, expanded
  <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> <code>http://xmlns.com/foaf/0.1/age</code>.</p>

<div class="note"><div id="h_note_3" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">Keys in the context are treated as <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> for the purpose of
  expansion and value coercion. At times, this may result in multiple representations for the same expanded <abbr title="Internationalized Resource Identifier">IRI</abbr>.
  For example, one could specify that <code>dog</code> and <code>cat</code> both expanded to <code>http://example.com/vocab#animal</code>.
  Doing this could be useful for establishing different type coercion or language specification rules. It also allows a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> (or even an
  absolute <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>) to be defined as something else entirely. For example, one could specify that
  the <a href="#dfn-term" title="term" class="tref internalDFN">term</a> <code>http://example.org/zoo</code> should expand to
  <code>http://example.org/river</code>, but this usage is discouraged because it would lead to a
  great deal of confusion among developers attempting to understand the JSON-LD document.</p></div>


</section>

<section id="embedding" class="informative">
  <h3 id="h3_embedding" role="heading" aria-level="2"><span class="secno">6.6 </span>Embedding</h3><p><em>This section is non-normative.</em></p>

  <p><dfn id="dfn-embedding" title="embedding">Embedding</dfn> is a JSON-LD feature that allows an author to
    use <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node objects</a> as
    <a href="#dfn-property" title="property" class="tref internalDFN">property</a> values. This is a commonly used mechanism for
    creating a parent-child relationship between two <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a>.</p>

  <p>The example shows two nodes related by a property from the first node:</p>

  <div class="example"><div class="example-title"><span>Example 26</span>: Embedding a node object as property value of another node object</div><pre class="example">{
...
  "name": "Manu Sporny",
  "<span class="highlight">knows</span>":
  {
    "<span class="highlight">@type</span>": "<span class="highlight">Person</span>",
    "<span class="highlight">name</span>": "<span class="highlight">Gregg Kellogg</span>",
  }
...
}</pre></div>

  <p>
    A <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>, like the one used above, may be used in
    any value position in the body of a JSON-LD document.</p>
</section>

<section id="advanced-context-usage" class="informative">
  <h3 id="h3_advanced-context-usage" role="heading" aria-level="2"><span class="secno">6.7 </span>Advanced Context Usage</h3><p><em>This section is non-normative.</em></p>

  <p>Section <a class="sec-ref" href="#the-context"><span class="secno">5.1</span> <span class="sec-title">The Context</span></a> introduced the basics of what makes
  JSON-LD work. This section expands on the basic principles of the
  <a href="#dfn-context" title="context" class="tref internalDFN">context</a> and demonstrates how more advanced use cases can
  be achieved using JSON-LD. </p>

  <p>In general, contexts may be used at any time a
    <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> is defined. The only time that one cannot
    express a context is inside a context definition itself. For example, a
    <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD document</a> may use more than one context at different
    points in a document:</p>

  <div class="example"><div class="example-title"><span>Example 27</span>: Using multiple contexts</div><pre class="example">[
  {
    <span class="highlight">"@context": "http://example.org/contexts/person.jsonld",</span>
    "name": "Manu Sporny",
    "homepage": "http://manu.sporny.org/",
    "depiction": "http://twitter.com/account/profile_image/manusporny"
  },
  {
    <span class="highlight">"@context": "http://example.org/contexts/place.jsonld",</span>
    "name": "The Empire State Building",
    "description": "The Empire State Building is a 102-story landmark in New York City.",
    "geo": {
      "latitude": "40.75",
      "longitude": "73.98"
    }
  }
]</pre></div>

  <p>Duplicate context <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> are overridden using a
    most-recently-defined-wins mechanism.</p>

  <div class="example"><div class="example-title"><span>Example 28</span>: Scoped contexts within node objects</div><pre class="example">{
  <span class="highlight">"@context":
  {
    "name": "http://example.com/person#name,
    "details": "http://example.com/person#details"
  }"</span>,
  "<span class="highlight">name</span>": "Markus Lanthaler",
  ...
  "details":
  {
    <span class="highlight">"@context":
    {
      "name": "http://example.com/organization#name"
    }</span>,
    "<span class="highlight">name</span>": "Graz University of Technology"
  }
}</pre></div>

  <p>In the example above, the <code>name</code> <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is overridden
    in the more deeply nested <code>details</code> structure. Note that this is
    rarely a good authoring practice and is typically used when working with
    legacy applications that depend on a specific structure of the
    <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>. If a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is redefined within a
    context, all previous rules associated with the previous definition are
    removed. If a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is redefined to <code>null</code>,
    the <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is effectively removed from the list of
    <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> defined in the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>.</p>

  <p>Multiple contexts may be combined using an <a href="#dfn-array" title="array" class="tref internalDFN">array</a>, which is processed
    in order. The set of contexts defined within a specific <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> are
    referred to as <dfn id="dfn-local-context" title="local-context">local contexts</dfn>. The
    <dfn id="dfn-active-context" title="active-context">active context</dfn> refers to the accumulation of
    <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local contexts</a> that are in scope at a
    specific point within the document. Setting a <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a>
    to <code>null</code> effectively resets the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>
    to an empty context. The following example specifies an external context
    and then layers an embedded context on top of the external context:</p>

  <div class="example"><div class="example-title"><span>Example 29</span>: Combining external and local contexts</div><pre class="example">{
  <span class="highlight">"@context": [
    "http://json-ld.org/contexts/person.jsonld",
    {
      "pic": "http://xmlns.com/foaf/0.1/depiction"
    }
  ],</span>
  "name": "Manu Sporny",
  "homepage": "http://manu.sporny.org/",
  <span class="highlight">"pic": "http://twitter.com/account/profile_image/manusporny"</span>
}</pre></div>

  <div class="note"><div id="h_note_4" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">When possible, the <a href="#dfn-context" title="context" class="tref internalDFN">context</a> definition should be put
    at the top of a JSON-LD document. This makes the document easier to read and
    might make streaming parsers more efficient. Documents that do not have the
    <a href="#dfn-context" title="context" class="tref internalDFN">context</a> at the top are still conformant JSON-LD.</p></div>

  <div class="note"><div id="h_note_5" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">To avoid forward-compatibility issues, <a href="#dfn-term" title="term" class="tref internalDFN">terms</a>
    starting with an&nbsp;<code>@</code> character are to be avoided as they
    might be used as <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a> in future versions
    of JSON-LD. Terms starting with an&nbsp;<code>@</code> character that are not
    <a href="#dfn-keyword" title="keyword" class="tref internalDFN">JSON-LD 1.0 keywords</a> are treated as any other term, i.e.,
    they are ignored unless mapped to an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. Furthermore, the use of
    empty <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> (<code>""</code>) is not allowed as
    not all programming languages are able to handle empty JSON keys.</p></div>
</section>

<section id="interpreting-json-as-json-ld" class="normative">
  <h3 id="h3_interpreting-json-as-json-ld" role="heading" aria-level="2"><span class="secno">6.8 </span>Interpreting JSON as JSON-LD</h3>

  <p>Ordinary JSON documents can be interpreted as JSON-LD by referencing a JSON-LD
    <a href="#dfn-context" title="context" class="tref internalDFN">context</a> document in an HTTP Link Header. Doing so allows JSON to
    be unambiguously machine-readable without requiring developers to drastically
    change their documents and provides an upgrade path for existing infrastructure
    without breaking existing clients that rely on the <code>application/json</code>
    media type or a media type with a <code>+json</code> suffix as defined in
    [<cite><a href="#bib-RFC6839" class="bibref">RFC6839</a></cite>].</p>

  <p>In order to use an external context with an ordinary JSON document, an author
    <em title="MUST" class="rfc2119">MUST</em> specify an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> to a valid <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD document</a> in
    an HTTP Link Header [<cite><a href="#bib-RFC5988" class="bibref">RFC5988</a></cite>] using the <code>http://www.w3.org/ns/json-ld#context</code>
    link relation. The referenced document <em title="MUST" class="rfc2119">MUST</em> have a top-level <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>.
    The <code>@context</code> subtree within that object is added to the top-level
    <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> of the referencing document. If an <a href="#dfn-array" title="array" class="tref internalDFN">array</a>
    is at the top-level of the referencing document and its items are
    <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON objects</a>, the <code>@context</code>
    subtree is added to all <a href="#dfn-array" title="array" class="tref internalDFN">array</a> items. All extra information located outside
    of the <code>@context</code> subtree in the referenced document <em title="MUST" class="rfc2119">MUST</em> be
    discarded. Effectively this means that the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> is
    initialized with the referenced external <a href="#dfn-context" title="context" class="tref internalDFN">context</a>. A response <em title="MUST NOT" class="rfc2119">MUST NOT</em>
    contain more than one HTTP Link Header [<cite><a href="#bib-RFC5988" class="bibref">RFC5988</a></cite>] using the
    <code>http://www.w3.org/ns/json-ld#context</code> link relation.</p>

  <p>The following example demonstrates the use of an external context with an
    ordinary JSON document:</p>

  <div class="example"><div class="example-title"><span>Example 30</span>: Referencing a JSON-LD context from a JSON document via an HTTP Link Header</div><pre class="example">GET /ordinary-json-document.json HTTP/1.1
Host: example.com
Accept: application/ld+json,application/json,*/*;q=0.1

====================================

HTTP/1.1 200 OK
...
Content-Type: <span class="highlight">application/json</span>
<span class="highlight">Link: &lt;http://json-ld.org/contexts/person.jsonld&gt;; rel="http://www.w3.org/ns/json-ld#context"; type="application/ld+json"</span>

{
  "name": "Markus Lanthaler",
  "homepage": "http://www.markus-lanthaler.com/",
  "image": "http://twitter.com/account/profile_image/markuslanthaler"
}</pre></div>

  <p>Please note that <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD documents</a>
    served with the <code>application/ld+json</code>
    media type <em title="MUST" class="rfc2119">MUST</em> have all context information, including references to external
    contexts, within the body of the document. Contexts linked via a
    <code>http://www.w3.org/ns/json-ld#context</code> HTTP Link Header <em title="MUST" class="rfc2119">MUST</em> be
    ignored for such documents.</p>
</section>

<section id="string-internationalization" class="informative">
  <h3 id="h3_string-internationalization" role="heading" aria-level="2"><span class="secno">6.9 </span>String Internationalization</h3><p><em>This section is non-normative.</em></p>

  <p>At times, it is important to annotate a <a href="#dfn-string" title="string" class="tref internalDFN">string</a>
    with its language. In JSON-LD this is possible in a variety of ways.
    First, it is possible to define a default language for a JSON-LD document
    by setting the <code>@language</code> key in the <a href="#dfn-context" title="context" class="tref internalDFN">context</a>:</p>

  <div class="example"><div class="example-title"><span>Example 31</span>: Setting the default language of a JSON-LD document</div><pre class="example">{
  <span class="highlight">"@context":
  {
    ...
    "@language": "ja"
  }</span>,
  "name": <span class="highlight">"花澄"</span>,
  "occupation": <span class="highlight">"科学者"</span>
}</pre></div>

  <p>The example above would associate the <code>ja</code> language
    code with the two <a href="#dfn-string" title="string" class="tref internalDFN">strings</a> <em>花澄</em> and <em>科学者</em>.
    Languages codes are defined in [<cite><a href="#bib-BCP47" class="bibref">BCP47</a></cite>]. The default language applies to all
    <a href="#dfn-string" title="string" class="tref internalDFN">string</a> values that are not <a href="#type-coercion">type coerced</a>.</p>

  <p>To clear the default language for a subtree, <code>@language</code> can
    be set to <code>null</code> in a <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a> as follows:</p>

  <div class="example"><div class="example-title"><span>Example 32</span>: Clearing default language</div><pre class="example">{
  "@context": {
    ...
    "@language": "ja"
  },
  "name": "花澄",
  "details": {
<span class="highlight">    "@context": {
      "@language": null
    }</span>,
    "occupation": "Ninja"
  }
}</pre></div>

  <p>Second, it is possible to associate a language with a specific <a href="#dfn-term" title="term" class="tref internalDFN">term</a>
    using an <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a>:</p>

  <div class="example"><div class="example-title"><span>Example 33</span>: Expanded term definition with language</div><pre class="example">{
  "@context": {
    ...
    "ex": "http://example.com/vocab/",
    "@language": "ja",
    "name": { "@id": "ex:name", <span class="highlight">"@language": null</span> },
    "occupation": { "@id": "ex:occupation" },
    "occupation_en": { "@id": "ex:occupation", <span class="highlight">"@language": "en"</span> },
    "occupation_cs": { "@id": "ex:occupation", <span class="highlight">"@language": "cs"</span> }
  },
  <span class="highlight">"name": "Yagyū Muneyoshi",
  "occupation": "忍者",
  "occupation_en": "Ninja",
  "occupation_cs": "Nindža",</span>
  ...
}</pre></div>

  <p>The example above would associate <em>忍者</em> with the specified default
    language code <code>ja</code>, <em>Ninja</em> with the language code
    <code>en</code>, and <em>Nindža</em> with the language code <code>cs</code>.
    The value of <code>name</code>, <em>Yagyū Muneyoshi</em> wouldn't be
    associated with any language code since <code>@language</code> was reset to
    <a href="#dfn-null" title="null" class="tref internalDFN">null</a> in the <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a>.</p>

  <div class="note"><div id="h_note_6" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">Language associations are only applied to plain
    <a href="#dfn-string" title="string" class="tref internalDFN">strings</a>. <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">Typed values</a>
    or values that are subject to <a href="#type-coercion">type coercion</a>
    are not language tagged.</p></div>

  <p>Just as in the example above, systems often need to express the value of a
    property in multiple languages. Typically, such systems also try to ensure that
    developers have a programmatically easy way to navigate the data structures for
    the language-specific data. In this case, <a href="#dfn-language-map" title="language-map" class="tref internalDFN">language maps</a>
    may be utilized.</p>

  <div class="example"><div class="example-title"><span>Example 34</span>: Language map expressing a property in three languages</div><pre class="example">{
  "@context":
  {
    ...
    "occupation": { "@id": "ex:occupation", <span class="highlight">"@container": "@language"</span> }
  },
  "name": "Yagyū Muneyoshi",
  "occupation":
  <span class="highlight">{
    "ja": "忍者",
    "en": "Ninja",
    "cs": "Nindža"
  }</span>
  ...
}</pre></div>

  <p>The example above expresses exactly the same information as the previous
    example but consolidates all values in a single property. To access the
    value in a specific language in a programming language supporting dot-notation
    accessors for object properties, a developer may use the
    <code>property.language</code> pattern. For example, to access the occupation
    in English, a developer would use the following code snippet:
    <code>obj.occupation.en</code>.</p>

  <p>Third, it is possible to override the default language by using a
    <a href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a>:</p>

  <div class="example"><div class="example-title"><span>Example 35</span>: Overriding default language using an expanded value</div><pre class="example">{
  "@context": {
    ...
    "@language": "ja"
  },
  "name": "花澄",
  "occupation": <span class="highlight">{
    "@value": "Scientist",
    "@language": "en"
  }</span>
}</pre></div>

  <p>This makes it possible to specify a plain string by omitting the
    <code>@language</code> tag or setting it to <code>null</code> when expressing
    it using a <a href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a>:</p>

  <div class="example"><div class="example-title"><span>Example 36</span>: Removing language information using an expanded value</div><pre class="example">{
  "@context": {
    ...
    "@language": "ja"
  },
  "name": <span class="highlight">{
    "@value": "Frank"
  }</span>,
  "occupation": {
    "@value": "Ninja",
    "@language": "en"
  },
  "speciality": "手裏剣"
}</pre></div>

</section>

<section id="iri-expansion-within-a-context" class="informative">
  <h3 id="h3_iri-expansion-within-a-context" role="heading" aria-level="2"><span class="secno">6.10 </span><abbr title="Internationalized Resource Identifier">IRI</abbr> Expansion within a Context</h3><p><em>This section is non-normative.</em></p>
  <p>In general, normal <abbr title="Internationalized Resource Identifier">IRI</abbr> expansion rules apply
    anywhere an <abbr title="Internationalized Resource Identifier">IRI</abbr> is expected (see <a class="sectionRef sec-ref" href="#iris">section 5.2 IRIs</a>). Within
    a <a href="#dfn-context" title="context" class="tref internalDFN">context</a> definition, this can mean that terms defined
    within the context may also be used within that context as long as
    there are no circular dependencies. For example, it is common to use
    the <code>xsd</code> namespace when defining <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed value</a>s:</p>

<div class="example"><div class="example-title"><span>Example 37</span>: IRI expansion within a context</div><pre class="example">{
  "@context":
  {
    <span class="highlight">"xsd": "http://www.w3.org/2001/XMLSchema#"</span>,
    "name": "http://xmlns.com/foaf/0.1/name",
    "age":
    {
      "@id": "http://xmlns.com/foaf/0.1/age",
      "@type": <span class="highlight">"xsd:integer"</span>
    },
    "homepage":
    {
      "@id": "http://xmlns.com/foaf/0.1/homepage",
      "@type": "@id"
    }
  },
  ...
}</pre></div>

<p>In this example, the <code>xsd</code> <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is defined
  and used as a <a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefix</a> for the <code>@type</code> coercion
  of the <code>age</code> property.</p>

<p><a href="#dfn-term" title="term" class="tref internalDFN">Terms</a> may also be used when defining the <abbr title="Internationalized Resource Identifier">IRI</abbr> of another
<a href="#dfn-term" title="term" class="tref internalDFN">term</a>:</p>

<div class="example"><div class="example-title"><span>Example 38</span>: Using a term to define the IRI of another term within a context</div><pre class="example">{
  "@context":
  {
    <span class="highlight">"foaf": "http://xmlns.com/foaf/0.1/"</span>,
    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "name": <span class="highlight">"foaf:name"</span>,
    "age":
    {
      "@id": <span class="highlight">"foaf:age"</span>,
      "@type": "xsd:integer"
    },
    "homepage":
    {
      "@id": <span class="highlight">"foaf:homepage"</span>,
      "@type": "@id"
    }
  },
  ...
}</pre></div>

<p><a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">Compact IRIs</a>
  and <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> may be used on the left-hand side of a
  <a href="#dfn-term" title="term" class="tref internalDFN">term</a> definition.</p>

<div class="example"><div class="example-title"><span>Example 39</span>: Using a compact IRI as a term</div><pre class="example">{
  "@context":
  {
    <span class="highlight">"foaf": "http://xmlns.com/foaf/0.1/"</span>,
    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "name": "foaf:name",
    "<span class="highlight">foaf:age</span>":
    {
      "@type": "xsd:integer"
    },
    "<span class="highlight">foaf:homepage</span>":
    <span class="highlight">{
      "@type": "@id"
    }</span>
  },
  ...
}</pre></div>

<p>
In this example, the <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> form is used in two different
ways.
In the first approach, <code>foaf:age</code> declares both the
<a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> for the <a href="#dfn-term" title="term" class="tref internalDFN">term</a> (using short-form) as well as the
<code>@type</code> associated with the <a href="#dfn-term" title="term" class="tref internalDFN">term</a>. In the second
approach, only the <code>@type</code> associated with the <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is
specified. The full <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> for
<code>foaf:homepage</code> is determined by looking up the <code>foaf</code>
<a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefix</a> in the
<a href="#dfn-context" title="context" class="tref internalDFN">context</a>.
</p>

<p>
<a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">Absolute IRIs</a> may also be used in the key position in a <a href="#dfn-context" title="context" class="tref internalDFN">context</a>:
</p>

<div class="example"><div class="example-title"><span>Example 40</span>: Associating context definitions with absolute IRIs</div><pre class="example">{
  "@context":
  {
    "foaf": "http://xmlns.com/foaf/0.1/",
    "xsd": "http://www.w3.org/2001/XMLSchema#",
    "name": "foaf:name",
    "foaf:age":
    {
      "@id": "foaf:age",
      "@type": "xsd:integer"
    },
    "<span class="highlight">http://xmlns.com/foaf/0.1/homepage</span>":
    {
      "@type": "@id"
    }
  },
  ...
}</pre></div>

<p>In order for the <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> to match above, the <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
  needs to be used in the <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD document</a>. Also note that <code>foaf:homepage</code>
  will not use the <code>{ "@type": "@id" }</code> declaration because
  <code>foaf:homepage</code> is not the same as <code>http://xmlns.com/foaf/0.1/homepage</code>.
  That is, <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> are looked up in a <a href="#dfn-context" title="context" class="tref internalDFN">context</a> using
  direct string comparison before the <a href="#dfn-prefix" title="prefix" class="tref internalDFN">prefix</a> lookup mechanism is applied.</p>

<div class="note"><div id="h_note_7" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">While it is possible to define a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or
  an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> to expand to some other unrelated <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>
  (for example, <code>foaf:name</code> expanding to
  <code>http://example.org/unrelated#species</code>), such usage is strongly
  discouraged.</p></div>

<p>The only exception for using terms in the <a href="#dfn-context" title="context" class="tref internalDFN">context</a> is that
  circular definitions are not allowed. That is,
  a definition of <em>term1</em> cannot depend on the
  definition of <em>term2</em> if <em>term2</em> also depends on
  <em>term1</em>. For example, the following <a href="#dfn-context" title="context" class="tref internalDFN">context</a> definition
  is illegal:</p>
<div class="example"><div class="example-title"><span>Example 41</span>: Illegal circular definition of terms within a context</div><pre class="example">{
  "@context":
  {
    <span class="highlight">"term1": "term2:foo",
    "term2": "term1:bar"</span>
  },
  ...
}</pre></div>
</section>

<section id="sets-and-lists" class="informative">
<h3 id="h3_sets-and-lists" role="heading" aria-level="2"><span class="secno">6.11 </span>Sets and Lists</h3><p><em>This section is non-normative.</em></p>

<p>A JSON-LD author can express multiple values in a compact way by using
  <a href="#dfn-array" title="array" class="tref internalDFN">arrays</a>. Since graphs do not describe ordering for links
  between nodes, arrays in JSON-LD do not provide an ordering of the
  contained elements by default. This is exactly the opposite from regular JSON
  arrays, which are ordered by default. For example, consider the following
  simple document:</p>

<div class="example"><div class="example-title"><span>Example 42</span>: Multiple values with no inherent order</div><pre class="example">{
...
  "@id": "http://example.org/people#joebob",
  "nick": <span class="highlight">[ "joe", "bob", "JB" ]</span>,
...
}</pre></div>

<p>The example shown above would result in the following data being generated,
  each relating the node to an individual value, with no inherent order:</p>

<table class="example">
<thead>
  <tr><th>Subject</th>
  <th>Property</th>
  <th>Value</th>
</tr></thead>
<tbody>
<tr>
  <td>http://example.org/people#joebob</td>
  <td>http://xmlns.com/foaf/0.1/nick</td>
  <td>joe</td>
</tr>
<tr>
  <td>http://example.org/people#joebob</td>
  <td>http://xmlns.com/foaf/0.1/nick</td>
  <td>bob</td>
</tr>
<tr>
  <td>http://example.org/people#joebob</td>
  <td>http://xmlns.com/foaf/0.1/nick</td>
  <td>JB</td>
</tr>
</tbody>
</table>

<p>Multiple values may also be expressed using the expanded form:</p>

<div class="example"><div class="example-title"><span>Example 43</span>: Using an expanded form to set multiple values</div><pre class="example">{
  "@id": "http://example.org/articles/8",
  "dc:title": <span class="highlight">
  [
    {
      "@value": "Das Kapital",
      "@language": "de"
    },
    {
      "@value": "Capital",
      "@language": "en"
    }
  ]</span>
}</pre></div>

<p>The example shown above would generate the following data, again with
  no inherent order:</p>

<table class="example">
<thead>
  <tr><th>Subject</th>
  <th>Property</th>
  <th>Value</th>
  <th>Language</th>
</tr></thead>
<tbody>
<tr>
  <td>http://example.org/articles/8</td>
  <td>http://purl.org/dc/terms/title</td>
  <td>Das Kapital</td>
  <td>de</td>
</tr>
<tr>
  <td>http://example.org/articles/8</td>
  <td>http://purl.org/dc/terms/title</td>
  <td>Capital</td>
  <td>en</td>
</tr>
</tbody>
</table>

<p>As the notion of ordered collections is rather important in data
  modeling, it is useful to have specific language support. In JSON-LD,
  a list may be represented using the <code>@list</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> as follows:</p>
<div class="example"><div class="example-title"><span>Example 44</span>: An ordered collection of values in JSON-LD</div><pre class="example">{
...
  "@id": "http://example.org/people#joebob",
  "foaf:nick":
  <span class="highlight">{
    "@list": [ "joe", "bob", "jaybee" ]
  }</span>,
...
}</pre></div>

<p>This describes the use of this <a href="#dfn-array" title="array" class="tref internalDFN">array</a> as being ordered,
  and order is maintained when processing a document. If every use of a given multi-valued
  property is a list, this may be abbreviated by setting <code>@container</code>
  to <code>@list</code> in the <a href="#dfn-context" title="context" class="tref internalDFN">context</a>:</p>
<div class="example"><div class="example-title"><span>Example 45</span>: Specifying that a collection is ordered in the context</div><pre class="example">{
  <span class="highlight">"@context":
  {
    ...
    "nick":
    {
      "@id": "http://xmlns.com/foaf/0.1/nick",
      "@container": "@list"
    }
  }</span>,
...
  "@id": "http://example.org/people#joebob",
  "nick": <span class="highlight">[ "joe", "bob", "jaybee" ]</span>,
...
}</pre></div>

<div class="note"><div id="h_note_8" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">List of lists in the form of <a href="#dfn-list-object" title="list-object" class="tref internalDFN">list objects</a>
  are not allowed in this version of JSON-LD. This decision was made due to the
  extreme amount of added complexity when processing lists of lists.</p></div>

<p>While <code>@list</code> is used to describe <em>ordered lists</em>,
  the <code>@set</code> keyword is used to describe <em>unordered sets</em>.
  The use of <code>@set</code> in the body of a JSON-LD document
  is optimized away when processing the document, as it is just syntactic
  sugar. However, <code>@set</code> is helpful when used within the context
  of a document.
  Values of terms associated with a <code>@set</code> or <code>@list</code> container
  are always represented in the form of an <a href="#dfn-array" title="array" class="tref internalDFN">array</a>,
  even if there is just a single value that would otherwise be optimized to
  a non-array form in compact form (see
  <a class="sectionRef sec-ref" href="#compacted-document-form">section 6.18 Compacted Document Form</a>). This makes post-processing of
  JSON-LD documents easier as the data is always in array form, even if the
  array only contains a single value.</p>

</section>

<section id="reverse-properties" class="informative">
  <h3 id="h3_reverse-properties" role="heading" aria-level="2"><span class="secno">6.12 </span>Reverse Properties</h3><p><em>This section is non-normative.</em></p>

  <p>JSON-LD serializes directed <a href="#dfn-graph" title="graph" class="tref internalDFN">graphs</a>. That means that
    every <a href="#dfn-property" title="property" class="tref internalDFN">property</a> points from a <a href="#dfn-node" title="node" class="tref internalDFN">node</a> to another <a href="#dfn-node" title="node" class="tref internalDFN">node</a>
    or <a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">value</a>. However, in some cases, it is desirable
    to serialize in the reverse direction. Consider for example the case where a person
    and its children should be described in a document. If the used vocabulary does not
    provide a <em>children</em> <a href="#dfn-property" title="property" class="tref internalDFN">property</a> but just a <em>parent</em>
    <a href="#dfn-property" title="property" class="tref internalDFN">property</a>, every <a href="#dfn-node" title="node" class="tref internalDFN">node</a> representing a child would have to
    be expressed with a <a href="#dfn-property" title="property" class="tref internalDFN">property</a> pointing to the parent as in the following
    example.</p>

  <div class="example"><div class="example-title"><span>Example 46</span>: A document with children linking to their parent</div><pre class="example">[
  {
    <span class="highlight">"@id": "#homer"</span>,
    "http://example.com/vocab#name": "Homer"
  },
  {
    "@id": "#bart",
    "http://example.com/vocab#name": "Bart",
    <span class="highlight">"http://example.com/vocab#parent": { "@id": "#homer" }</span>
  },
  {
    "@id": "#lisa",
    "http://example.com/vocab#name": "Lisa",
    <span class="highlight">"http://example.com/vocab#parent": { "@id": "#homer" }</span>
  }
]</pre></div>

  <p>Expressing such data is much simpler by using JSON-LD's <code>@reverse</code>
    <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>:</p>

  <div class="example"><div class="example-title"><span>Example 47</span>: A person and its children using a reverse property</div><pre class="example">{
  "@id": "#homer",
  "http://example.com/vocab#name": "Homer",
  <span class="highlight">"@reverse"</span>: {
    <span class="highlight">"http://example.com/vocab#parent"</span>: [
      {
        "@id": "#bart",
        "http://example.com/vocab#name": "Bart"
      },
      {
        "@id": "#lisa",
        "http://example.com/vocab#name": "Lisa"
      }
    ]
  }
}</pre></div>

  <p>The <code>@reverse</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> can also be used in
    <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definitions</a>
    to create reverse properties as shown in the following example:</p>


  <div class="example"><div class="example-title"><span>Example 48</span>: Using @reverse to define reverse properties</div><pre class="example">{
  "@context": {
    "name": "http://example.com/vocab#name",
    <span class="highlight">"children": { "@reverse": "http://example.com/vocab#parent" }</span>
  },
  "@id": "#homer",
  "name": "Homer",
  <span class="highlight">"children"</span>: [
    {
      "@id": "#bart",
      "name": "Bart"
    },
    {
      "@id": "#lisa",
      "name": "Lisa"
    }
  ]
}</pre></div>
</section>


<section id="named-graphs" class="informative">
  <h3 id="h3_named-graphs" role="heading" aria-level="2"><span class="secno">6.13 </span>Named Graphs</h3><p><em>This section is non-normative.</em></p>

  <p>At times, it is necessary to make statements about a <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a>
    itself, rather than just a single <a href="#dfn-node" title="node" class="tref internalDFN">node</a>. This can be done by
    grouping a set of <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a> using the <code>@graph</code>
    <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>. A developer may also name data expressed using the
    <code>@graph</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> by pairing it with an
    <code>@id</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> as shown in the following example:</p>

  <div class="example"><div class="example-title"><span>Example 49</span>: Identifying and making statements about a graph</div><pre class="example">{
  "@context": {
    "generatedAt": {
      "@id": "http://www.w3.org/ns/prov#generatedAtTime",
      "@type": "http://www.w3.org/2001/XMLSchema#date"
    },
    "Person": "http://xmlns.com/foaf/0.1/Person",
    "name": "http://xmlns.com/foaf/0.1/name",
    "knows": "http://xmlns.com/foaf/0.1/knows"
  },
  <span class="highlight">"@id": "http://example.org/graphs/73",
  "generatedAt": "2012-04-09",
  "@graph":</span>
  [
    {
      "@id": "http://manu.sporny.org/about#manu",
      "@type": "Person",
      "name": "Manu Sporny",
      "knows": "http://greggkellogg.net/foaf#me"
    },
    {
      "@id": "http://greggkellogg.net/foaf#me",
      "@type": "Person",
      "name": "Gregg Kellogg",
      "knows": "http://manu.sporny.org/about#manu"
    }
  ]
}</pre></div>

  <p>The example above expresses a <a href="#dfn-named-graph" title="named-graph" class="tref internalDFN">named graph</a> that is identified
    by the <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> <code>http://example.org/graphs/73</code>. That
    graph is composed of the statements about Manu and Gregg. Metadata about
    the graph itself is expressed via the <code>generatedAt</code> property,
    which specifies when the graph was generated. An alternative view of the
    information above is represented in table form below:</p>

  <table class="example">
  <thead>
    <tr><th>Graph</th>
    <th>Subject</th>
    <th>Property</th>
    <th>Value</th>
    <th>Value Type</th>
  </tr></thead>
  <tbody>
  <tr>
    <td>&nbsp;</td>
    <td>http://example.org/graphs/73</td>
    <td>http://www.w3.org/ns/prov#generatedAtTime</td>
    <td>2012-04-09</td>
    <td>http://www.w3.org/2001/XMLSchema#date</td>
  </tr>
  <tr>
    <td>http://example.org/graphs/73</td>
    <td>http://manu.sporny.org/about#manu</td>
    <td>http://www.w3.org/2001/XMLSchema#type</td>
    <td>http://xmlns.com/foaf/0.1/Person</td>
    <td></td>
  </tr>
  <tr>
    <td>http://example.org/graphs/73</td>
    <td>http://manu.sporny.org/about#manu</td>
    <td>http://xmlns.com/foaf/0.1/name</td>
    <td>Manu Sporny</td>
    <td></td>
  </tr>
  <tr>
    <td>http://example.org/graphs/73</td>
    <td>http://manu.sporny.org/about#manu</td>
    <td>http://xmlns.com/foaf/0.1/knows</td>
    <td>http://greggkellogg.net/foaf#me</td>
    <td></td>
  </tr>
  <tr>
    <td>http://example.org/graphs/73</td>
    <td>http://greggkellogg.net/foaf#me</td>
    <td>http://www.w3.org/2001/XMLSchema#type</td>
    <td>http://xmlns.com/foaf/0.1/Person</td>
    <td></td>
  </tr>
  <tr>
    <td>http://example.org/graphs/73</td>
    <td>http://greggkellogg.net/foaf#me</td>
    <td>http://xmlns.com/foaf/0.1/name</td>
    <td>Gregg Kellogg</td>
    <td></td>
  </tr>
  <tr>
    <td>http://example.org/graphs/73</td>
    <td>http://greggkellogg.net/foaf#me</td>
    <td>http://xmlns.com/foaf/0.1/knows</td>
    <td>http://manu.sporny.org/about#manu</td>
    <td></td>
  </tr>
  </tbody>
  </table>

  <p>When a JSON-LD document's top-level structure is an
    <a href="#dfn-json-object" title="json-object" class="tref internalDFN">object</a> that contains no other
    <a href="#dfn-property" title="property" class="tref internalDFN">properties</a> than <code>@graph</code> and
    optionally <code>@context</code> (properties that are not mapped to an
    <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> are ignored),
    <code>@graph</code> is considered to express the otherwise implicit
    <a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">default graph</a>. This mechanism can be useful when a number
    of <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a> exist at the document's top level that
    share the same <a href="#dfn-context" title="context" class="tref internalDFN">context</a>, which is, e.g., the case when a
    document is <a href="#flattened-document-form">flattened</a>. The
    <code>@graph</code> keyword collects such nodes in an <a href="#dfn-array" title="array" class="tref internalDFN">array</a>
    and allows the use of a shared context.</p>

  <div class="example"><div class="example-title"><span>Example 50</span>: Using @graph to explicitly express the default graph</div><pre class="example">{
  "@context": ...,
  "<span class="highlight">@graph</span>":
  [
    {
      "@id": "http://manu.sporny.org/about#manu",
      "@type": "foaf:Person",
      "name": "Manu Sporny",
      "knows": "http://greggkellogg.net/foaf#me"
    },
    {
      "@id": "http://greggkellogg.net/foaf#me",
      "@type": "foaf:Person",
      "name": "Gregg Kellogg",
      "knows": "http://manu.sporny.org/about#manu"
    }
  ]
}</pre></div>

  <p>In this case, embedding doesn't work as each <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>
    references the other. This is equivalent to using multiple
    <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node objects</a> in array and defining
    the <code>@context</code> within each <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>:</p>

  <div class="example"><div class="example-title"><span>Example 51</span>: Context needs to be duplicated if @graph is not used</div><pre class="example">[
  {
    <span class="highlight">"@context": ...,</span>
    "@id": "http://manu.sporny.org/about#manu",
    "@type": "foaf:Person",
    "name": "Manu Sporny",
    "knows": "http://greggkellogg.net/foaf#me"
  },
  {
    <span class="highlight">"@context": ...,</span>
    "@id": "http://greggkellogg.net/foaf#me",
    "@type": "foaf:Person",
    "name": "Gregg Kellogg",
    "knows": "http://manu.sporny.org/about#manu"
  }
]</pre></div>

</section>

<section id="identifying-blank-nodes" class="informative">
  <h3 id="h3_identifying-blank-nodes" role="heading" aria-level="2"><span class="secno">6.14 </span>Identifying Blank Nodes</h3><p><em>This section is non-normative.</em></p>

  <p>At times, it becomes necessary to be able to express information without
    being able to uniquely identify the <a href="#dfn-node" title="node" class="tref internalDFN">node</a> with an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.
    This type of node is called a <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a>. JSON-LD does not require
    all nodes to be identified using <code>@id</code>. However, some graph topologies
    may require identifiers to be serializable. Graphs containing loops, e.g., cannot
    be serialized using embedding alone, <code>@id</code> must be used to connect the nodes.
    In these situations, one can use <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifiers</a>,
    which look like <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> using an underscore (<code>_</code>)
    as scheme. This allows one to reference the node locally within the document, but
    makes it impossible to reference the node from an external document. The
    <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a> is scoped  to the document in which it is used.</p>

  <div class="example"><div class="example-title"><span>Example 52</span>: Specifying a local blank node identifier</div><pre class="example">{
   ...
   "@id": "<span class="highlight">_:n1</span>",
   "name": "Secret Agent 1",
   "knows":
     {
       "name": "Secret Agent 2",
       "knows": { "@id": "<span class="highlight">_:n1</span>" }
     }
}</pre></div>

  <p>The example above contains information about to secret agents that cannot be identified
    with an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>. While expressing that <em>agent&nbsp;1</em> knows <em>agent&nbsp;2</em> is possible
    without using <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifiers</a>, it is
    necessary assign <em>agent&nbsp;1</em> an identifier so that it can be referenced from
    <em>agent&nbsp;2</em>.</p>
  <p>It is worth nothing that blank node identifiers may be relabeled during processing.
    If a developer finds that they refer to the <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a> more than once,
    they should consider naming the node using a dereferenceable <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> so that
    it can also be referenced from other documents.</p>
</section>

<section id="aliasing-keywords" class="informative">
  <h3 id="h3_aliasing-keywords" role="heading" aria-level="2"><span class="secno">6.15 </span>Aliasing Keywords</h3><p><em>This section is non-normative.</em></p>

  <p>Each of the JSON-LD <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a>,
    except for <code>@context</code>, may be aliased to application-specific
    keywords. This feature allows legacy JSON content to be utilized
    by JSON-LD by re-using JSON keys that already exist in legacy documents.
    This feature also allows developers to design domain-specific implementations
    using only the JSON-LD <a href="#dfn-context" title="context" class="tref internalDFN">context</a>.</p>

  <div class="example"><div class="example-title"><span>Example 53</span>: Aliasing keywords</div><pre class="example">{
  "@context":
  {
     <span class="highlight">"url": "@id"</span>,
     <span class="highlight">"a": "@type"</span>,
     "name": "http://xmlns.com/foaf/0.1/name"
  },
  "<span class="highlight">url</span>": "http://example.com/about#gregg",
  "<span class="highlight">a</span>": "http://xmlns.com/foaf/0.1/Person",
  "name": "Gregg Kellogg"
}</pre></div>

  <p>In the example above, the <code>@id</code> and <code>@type</code>
    <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a> have been given the aliases
    <strong>url</strong> and <strong>a</strong>, respectively.</p>

  <p>Since keywords cannot be redefined, they can also not be aliased to
    other keywords.</p>
</section>

<section id="data-indexing" class="informative">
  <h3 id="h3_data-indexing" role="heading" aria-level="2"><span class="secno">6.16 </span>Data Indexing</h3><p><em>This section is non-normative.</em></p>

  <p>Databases are typically used to make access to
    data more efficient. Developers often extend this sort of functionality into
    their application data to deliver similar performance gains. Often this
    data does not have any meaning from a Linked Data standpoint, but is
    still useful for an application.</p>

  <p>JSON-LD introduces the notion of <a href="#dfn-index-map" title="index-map" class="tref internalDFN">index maps</a>
    that can be used to structure data into a form that is
    more efficient to access. The data indexing feature allows an author to
    structure data using a simple key-value map where the keys do not map
    to <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>. This enables direct access to data
    instead of having to scan an array in search of a specific item.
    In JSON-LD such data can be specified by associating the
    <code>@index</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> with a
    <code>@container</code> declaration in the context:</p>

  <div class="example"><div class="example-title"><span>Example 54</span>: Indexing data in JSON-LD</div><pre class="example">{
  "@context":
  {
     "schema": "http://schema.org/",
     "name": "schema:name",
     "body": "schema:articleBody",
     "words": "schema:wordCount",
     "post": {
       "@id": "schema:blogPost",
       <span class="highlight">"@container": "@index"</span>
     }
  },
  "@id": "http://example.com/",
  "@type": "schema:Blog",
  "name": "World Financial News",
  <span class="highlight">"post": {
     "en": {
       "@id": "http://example.com/posts/1/en",
       "body": "World commodities were up today with heavy trading of crude oil...",
       "words": 1539
     },
     "de": {
       "@id": "http://example.com/posts/1/de",
       "body": "Die Werte an Warenbörsen stiegen im Sog eines starken Handels von Rohöl...",
       "words": 1204
     }</span>
  }
}</pre></div>

  <p>In the example above, the <strong>post</strong> <a href="#dfn-term" title="term" class="tref internalDFN">term</a> has
    been marked as an <a href="#dfn-index-map" title="index-map" class="tref internalDFN">index map</a>. The <strong>en</strong>,
    <strong>de</strong>, and <strong>ja</strong> keys will be ignored
    semantically, but preserved syntactically, by the JSON-LD Processor.
    This allows a developer to access the German version
    of the <strong>post</strong> using the following code snippet:
    <code>obj.post.de</code>.</p>

  <p>The interpretation of the data above is expressed in
    the table below. Note how the index keys do not appear in the Linked Data
    below, but would continue to exist if the document were compacted or
    expanded (see <a class="sectionRef sec-ref" href="#compacted-document-form">section 6.18 Compacted Document Form</a> and
    <a class="sectionRef sec-ref" href="#expanded-document-form">section 6.17 Expanded Document Form</a>) using a JSON-LD processor:</p>

  <table class="example">
    <thead>
      <tr><th>Subject</th>
      <th>Property</th>
      <th>Value</th>
    </tr></thead>
    <tbody>
      <tr>
        <td>http://example.com/</td>
        <td>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</td>
        <td>http://schema.org/Blog</td>
      </tr>
      <tr>
        <td>http://example.com/</td>
        <td>http://schema.org/name</td>
        <td>World Financial News</td>
      </tr>
      <tr>
        <td>http://example.com/</td>
        <td>http://schema.org/blogPost</td>
        <td>http://example.com/posts/1/en</td>
      </tr>
      <tr>
        <td>http://example.com/</td>
        <td>http://schema.org/blogPost</td>
        <td>http://example.com/posts/1/de</td>
      </tr>
      <tr>
        <td>http://example.com/posts/1/en</td>
        <td>http://schema.org/articleBody</td>
        <td>World commodities were up today with heavy trading of crude oil...</td>
      </tr>
      <tr>
        <td>http://example.com/posts/1/en</td>
        <td>http://schema.org/wordCount</td>
        <td>1539</td>
      </tr>
      <tr>
        <td>http://example.com/posts/1/de</td>
        <td>http://schema.org/articleBody</td>
        <td>Die Werte an Warenbörsen stiegen im Sog eines starken Handels von Rohöl...</td>
      </tr>
      <tr>
        <td>http://example.com/posts/1/de</td>
        <td>http://schema.org/wordCount</td>
        <td>1204</td>
      </tr>
    </tbody>
  </table>
</section>

<section id="expanded-document-form" class="informative">
  <h3 id="h3_expanded-document-form" role="heading" aria-level="2"><span class="secno">6.17 </span>Expanded Document Form</h3><p><em>This section is non-normative.</em></p>

  <p>The JSON-LD Processing Algorithms and API specification [<cite><a href="#bib-JSON-LD-API" class="bibref">JSON-LD-API</a></cite>]
    defines a method for <em>expanding</em> a JSON-LD document.
    Expansion is the process of taking a JSON-LD document and applying a
    <code>@context</code> such that all IRIs, types, and values
    are expanded so that the <code>@context</code> is no longer necessary.</p>

  <p>For example, assume the following JSON-LD input document:</p>

  <div class="example"><div class="example-title"><span>Example 55</span>: Sample JSON-LD document</div><pre class="example">{
   "@context":
   {
      "name": "http://xmlns.com/foaf/0.1/name",
      "homepage": {
        "@id": "http://xmlns.com/foaf/0.1/homepage",
        "@type": "@id"
      }
   },
   "name": "Manu Sporny",
   "homepage": "http://manu.sporny.org/"
}</pre></div>

  <p>Running the JSON-LD Expansion algorithm against the JSON-LD input document
    provided above would result in the following output:</p>

  <div class="example"><div class="example-title"><span>Example 56</span>: Expanded form for the previous example</div><pre class="example">[
  {
    "http://xmlns.com/foaf/0.1/name": [
      { "@value": "Manu Sporny" }
    ],
    "http://xmlns.com/foaf/0.1/homepage": [
      { "@id": "http://manu.sporny.org/" }
    ]
  }
]</pre></div>

  <p><a href="#application-ld-json">JSON-LD's media type</a> defines a
    <code>profile</code> parameter which can be used to signal or request
    expanded document form. The profile URI identifying expanded document
    form is <code>http://www.w3.org/ns/json-ld#expanded</code>.</p>
</section>

<section id="compacted-document-form" class="informative">
  <h3 id="h3_compacted-document-form" role="heading" aria-level="2"><span class="secno">6.18 </span>Compacted Document Form</h3><p><em>This section is non-normative.</em></p>

  <p>The JSON-LD Processing Algorithms and API specification [<cite><a href="#bib-JSON-LD-API" class="bibref">JSON-LD-API</a></cite>] defines
    a method for <em>compacting</em> a JSON-LD document. Compaction is the process
    of applying a developer-supplied context to shorten <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>
    to <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> or <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact IRIs</a>
    and JSON-LD values expressed in expanded form to simple values such as
    <a href="#dfn-string" title="string" class="tref internalDFN">strings</a> or <a href="#dfn-number" title="number" class="tref internalDFN">numbers</a>.
    Often this makes it simpler to work with document as the data is expressed in
    application-specific terms. Compacted documents are also typically easier to read
    for humans.</p>

  <p>For example, assume the following JSON-LD input document:</p>

  <div class="example"><div class="example-title"><span>Example 57</span>: Sample expanded JSON-LD document</div><pre class="example">[
  {
    "http://xmlns.com/foaf/0.1/name": [ "Manu Sporny" ],
    "http://xmlns.com/foaf/0.1/homepage": [
      {
       "@id": "http://manu.sporny.org/"
      }
    ]
  }
]</pre></div>

  <p>Additionally, assume the following developer-supplied JSON-LD context:</p>

  <div class="example"><div class="example-title"><span>Example 58</span>: Sample context</div><pre class="example">{
  "@context": {
    "name": "http://xmlns.com/foaf/0.1/name",
    "homepage": {
      "@id": "http://xmlns.com/foaf/0.1/homepage",
      "@type": "@id"
    }
  }
}</pre></div>

  <p>Running the JSON-LD Compaction algorithm given the context supplied above
    against the JSON-LD input document provided above would result in the following
    output:</p>

  <div class="example"><div class="example-title"><span>Example 59</span>: Compact form of the sample document once sample context has been applied</div><pre class="example">{
  "@context": {
    "name": "http://xmlns.com/foaf/0.1/name",
    "homepage": {
      "@id": "http://xmlns.com/foaf/0.1/homepage",
      "@type": "@id"
    }
  },
  "name": "Manu Sporny",
  "homepage": "http://manu.sporny.org/"
}</pre></div>

  <p><a href="#application-ld-json">JSON-LD's media type</a> defines a
    <code>profile</code> parameter which can be used to signal or request
    compacted document form. The profile URI identifying compacted document
    form is <code>http://www.w3.org/ns/json-ld#compacted</code>.</p>
</section>

<section id="flattened-document-form" class="informative">
  <h3 id="h3_flattened-document-form" role="heading" aria-level="2"><span class="secno">6.19 </span>Flattened Document Form</h3><p><em>This section is non-normative.</em></p>

  <p>The JSON-LD Processing Algorithms and API specification [<cite><a href="#bib-JSON-LD-API" class="bibref">JSON-LD-API</a></cite>] defines
    a method for <em>flattening</em> a JSON-LD document. Flattening collects all
    properties of a <a href="#dfn-node" title="node" class="tref internalDFN">node</a> in a single <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> and labels
    all <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank nodes</a> with
    <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifiers</a>.
    This ensures a shape of the data and consequently may drastically simplify the code
    required to process JSON-LD in certain applications.</p>

  <p>For example, assume the following JSON-LD input document:</p>

  <div class="example"><div class="example-title"><span>Example 60</span>: Sample JSON-LD document</div><pre class="example">{
  "@context": {
    "name": "http://xmlns.com/foaf/0.1/name",
    "knows": "http://xmlns.com/foaf/0.1/knows"
  },
  "@id": "http://me.markus-lanthaler.com/",
  "name": "Markus Lanthaler",
  "knows": [
    {
      "@id": "http://manu.sporny.org/about#manu",
      "name": "Manu Sporny"
    },
    {
      "name": "Dave Longley"
    }
  ]
}</pre></div>

  <p>Running the JSON-LD Flattening algorithm against the JSON-LD input document in
    the example above and using the same context would result in the following
    output:</p>

  <div class="example"><div class="example-title"><span>Example 61</span>: Flattened and compacted form for the previous example</div><pre class="example">{
  "@context": {
    "name": "http://xmlns.com/foaf/0.1/name",
    "knows": "http://xmlns.com/foaf/0.1/knows"
  },
  "@graph": [
    {
      "@id": "_:b0",
      "name": "Dave Longley"
    },
    {
      "@id": "http://manu.sporny.org/about#manu",
      "name": "Manu Sporny"
    },
    {
      "@id": "http://me.markus-lanthaler.com/",
      "name": "Markus Lanthaler",
      "knows": [
        { "@id": "http://manu.sporny.org/about#manu" },
        { "@id": "_:b0" }
      ]
    }
  ]
}</pre></div>

  <p><a href="#application-ld-json">JSON-LD's media type</a> defines a
    <code>profile</code> parameter which can be used to signal or request
    flattened document form. The profile URI identifying flattened document
    form is <code>http://www.w3.org/ns/json-ld#flattened</code>. It can be
    combined with the profile URI identifying
    <a href="#expanded-document-form">expanded document form</a> or
    <a href="#compacted-document-form">compacted document from</a>.</p>
</section>

<section id="embedding-json-ld-in-html-documents" class="informative">
  <h3 id="h3_embedding-json-ld-in-html-documents" role="heading" aria-level="2"><span class="secno">6.20 </span>Embedding JSON-LD in HTML Documents</h3><p><em>This section is non-normative.</em></p>

  <p>HTML script tags can be used to embed blocks of data in documents.
    This way, JSON-LD content can be easily embedded in HTML by placing
    it in a script element with the <code>type</code> attribute set to
    <code>application/ld+json</code>.</p>

  <div class="example"><div class="example-title"><span>Example 62</span>: Embedding JSON-LD in HTML</div><pre class="example"><span class="highlight">&lt;script type="application/ld+json"&gt;</span>
{
  "@context": "http://json-ld.org/contexts/person.jsonld",
  "@id": "http://dbpedia.org/resource/John_Lennon",
  "name": "John Lennon",
  "born": "1940-10-09",
  "spouse": "http://dbpedia.org/resource/Cynthia_Lennon"
}
<span class="highlight">&lt;/script&gt;</span></pre></div>

  <p>Depending on how the HTML document is served, certain strings may need
    to be escaped.</p>

  <p>Defining how such data may be used is beyond the scope of this specification.
    The embedded JSON-LD document might be extracted as is or, e.g., be
    interpreted as RDF.</p>

  <p>If JSON-LD content is extracted as RDF [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>], it should be expanded into an
    <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset" title="rdf-dataset" class="tref externalDFN">RDF Dataset</a> using the
    <cite><a href="http://www.w3.org/TR/2013/PR-json-ld-api-20131105/#deserialize-json-ld-to-rdf-algorithm">Deserialize JSON-LD to RDF Algorithm</a></cite>
    [<cite><a href="#bib-JSON-LD-API" class="bibref">JSON-LD-API</a></cite>].</p>
</section>

</section>

<section id="data-model" class="normative">
  <!--OddPage--><h2 id="h2_data-model" role="heading" aria-level="1"><span class="secno">7. </span>Data Model</h2>

  <p>JSON-LD is a serialization format for Linked Data based on JSON.
    It is therefore important to distinguish between the syntax, which is
    defined by JSON in [<cite><a href="#bib-RFC4627" class="bibref">RFC4627</a></cite>], and the <dfn id="dfn-data-model" title="data-model">data model</dfn> which is
    an extension of the RDF data model [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>]. The precise
    details of how JSON-LD relates to the RDF data model are given in
    <a class="sectionRef sec-ref" href="#relationship-to-rdf">section 9. Relationship to RDF</a>.</p>

  <p>To ease understanding for developers unfamiliar with the RDF model, the
    following summary is provided:</p>

  <ul>
    <li>A <dfn id="dfn-json-ld-document" title="json-ld-document">JSON-LD document</dfn> serializes a
      <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset" class="externalDFN">generalized RDF Dataset</a>
      [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>], which is a collection of <a href="#dfn-graph" title="graph" class="tref internalDFN">graphs</a>
      that comprises exactly one <dfn id="dfn-default-graph" title="default-graph"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-default-graph" class="externalDFN">default graph</a></dfn>
      and zero or more <dfn id="dfn-named-graph" title="named-graph"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-named-graph" class="externalDFN">named graphs</a></dfn>.</li>
    <li>The <a href="#dfn-default-graph" title="default-graph" class="tref internalDFN">default graph</a> does not have a name and <em title="MAY" class="rfc2119">MAY</em> be empty.</li>
    <li>Each <a href="#dfn-named-graph" title="named-graph" class="tref internalDFN">named graph</a> is a pair consisting of an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or
      <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a> (the
      <dfn id="dfn-graph-name" title="graph-name"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-graph-name" class="externalDFN">graph name</a></dfn>)
      and a <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a>. Whenever practical, the <a href="#dfn-graph-name" title="graph-name" class="tref internalDFN">graph name</a> <em title="SHOULD" class="rfc2119">SHOULD</em> be an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
    <li>A <dfn id="dfn-graph" title="graph"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-graph" class="externalDFN">graph</a></dfn>
      is a labeled directed graph, i.e., a set of <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a>
      connected by <a href="#dfn-edge" title="edge" class="tref internalDFN">edges</a>.</li>
    <li>Every <dfn id="dfn-edge" title="edge">edge</dfn> has a direction associated with it and is labeled with
      an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>. Within the JSON-LD syntax
      these edge labels are called
      <dfn id="dfn-property" title="property"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-property" class="externalDFN">properties</a></dfn>.
      Whenever practical, an <a href="#dfn-edge" title="edge" class="tref internalDFN">edge</a> <em title="SHOULD" class="rfc2119">SHOULD</em> be labeled with an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
    <li>Every <dfn id="dfn-node" title="node"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-node" class="externalDFN">node</a></dfn>
      is an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a>, a <a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">JSON-LD value</a>,
      or a <a href="#dfn-list" title="list" class="tref internalDFN">list</a>.</li>
    <li>A <a href="#dfn-node" title="node" class="tref internalDFN">node</a> having an outgoing edge <em title="MUST" class="rfc2119">MUST</em> be an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a
      <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a>.</li>
    <li>A <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a> <em title="MUST NOT" class="rfc2119">MUST NOT</em> contain unconnected <a href="#dfn-node" title="node" class="tref internalDFN">nodes</a>,
      i.e., nodes which are not connected by an <a href="#dfn-edge" title="edge" class="tref internalDFN">edge</a> to any other <a href="#dfn-node" title="node" class="tref internalDFN">node</a>.</li>
    <li>An <dfn id="dfn-iri" title="iri"><abbr title="Internationalized Resource Identifier"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-iri" class="externalDFN">IRI</a></abbr></dfn>
      (Internationalized Resource Identifier) is a string that conforms to the syntax
      defined in [<cite><a href="#bib-RFC3987" class="bibref">RFC3987</a></cite>]. <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> used within a
      <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a> <em title="SHOULD" class="rfc2119">SHOULD</em> return a Linked Data document describing
      the resource denoted by that <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> when being dereferenced.</li>
    <li>A <dfn id="dfn-blank-node" title="blank-node"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node" class="externalDFN">blank node</a></dfn>
      is a <a href="#dfn-node" title="node" class="tref internalDFN">node</a> which is neither an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
      nor a <a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">JSON-LD value</a>, nor a <a href="#dfn-list" title="list" class="tref internalDFN">list</a>. A blank node <em title="MAY" class="rfc2119">MAY</em> be identified
      using a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>.</li>
    <li>A <dfn id="dfn-blank-node-identifier" title="blank-node-identifier"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node-identifier" class="externalDFN">blank node identifier</a></dfn>
      is a string that can be used as an identifier for a <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a> within
      the scope of a <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD document</a>. Blank node identifiers begin with
      <code>_:</code>.</li>
    <li>A <dfn id="dfn-json-ld-value" title="json-ld-value">JSON-LD value</dfn> is a <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed value</a>, a <a href="#dfn-string" title="string" class="tref internalDFN">string</a> (which is interpreted
      as <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed value</a> with type <code>xsd:string</code>), a <a href="#dfn-number" title="number" class="tref internalDFN">number</a>
      (<a href="#dfn-number" title="number" class="tref internalDFN">numbers</a> with a non-zero fractional part, i.e., the result of a modulo‑1 operation,
      are interpreted as <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed values</a> with type <code>xsd:double</code>, all other
      <a href="#dfn-number" title="number" class="tref internalDFN">numbers</a> are interpreted as <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed values</a>
      with type <code>xsd:integer</code>), <a href="#dfn-true" title="true" class="tref internalDFN">true</a> or <a href="#dfn-false" title="false" class="tref internalDFN">false</a> (which are interpreted as
      <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed values</a> with type <code>xsd:boolean</code>),
      or a <a href="#dfn-language-tagged-string" title="language-tagged-string" class="tref internalDFN">language-tagged string</a>.</li>
    <li>A <dfn id="dfn-typed-value" title="typed-value">typed value</dfn> consists of a value, which is a string, and a type, which is an
      <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</li>
    <li>A <dfn id="dfn-language-tagged-string" title="language-tagged-string"><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string" class="externalDFN">language-tagged string</a></dfn>
      consists of a string and a non-empty language tag as defined by [<cite><a href="#bib-BCP47" class="bibref">BCP47</a></cite>].
      The language tag <em title="MUST" class="rfc2119">MUST</em> be well-formed according to section
      <a href="http://tools.ietf.org/html/bcp47#section-2.2.9">2.2.9 Classes of Conformance</a>
      of [<cite><a href="#bib-BCP47" class="bibref">BCP47</a></cite>].</li>
    <li>A <dfn id="dfn-list" title="list">list</dfn> is a sequence of zero or more <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>,
      <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank nodes</a>, and <a href="#dfn-json-ld-value" title="json-ld-value" class="tref internalDFN">JSON-LD values</a>.
      <a href="#dfn-list" title="list" class="tref internalDFN">Lists</a> are interpreted as
      <a href="http://www.w3.org/TR/rdf11-mt/#rdf-collections" class="externalDFN">RDF list structures</a> [<cite><a href="#bib-RDF11-MT" class="bibref">RDF11-MT</a></cite>].</li>
  </ul>

  <p><a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD documents</a> <em title="MAY" class="rfc2119">MAY</em> contain data
    that cannot be represented by the <a href="#dfn-data-model" title="data-model" class="tref internalDFN">data model</a>
    defined above. Unless otherwise specified, such data is ignored when a
    <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD document</a> is being processed. One result of this rule
    is that properties which are not mapped to an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
    a <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank node</a>, or <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> will be ignored.</p>

  <p style="text-align: center"><img src="linked-data-graph.png" title="An illustration of the data model" alt="An illustration of the data model"></p>
  <p style="text-align: center">Figure&nbsp;1: An illustration of the data model.</p>
</section>

<section id="json-ld-grammar" class="normative">
  <!--OddPage--><h2 id="h2_json-ld-grammar" role="heading" aria-level="1"><span class="secno">8. </span>JSON-LD Grammar</h2>

  <p>This appendix restates the syntactic conventions described in the
    previous sections more formally.</p>

  <p>A <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD document</a> <em title="MUST" class="rfc2119">MUST</em> be a valid JSON document as described
    in [<cite><a href="#bib-RFC4627" class="bibref">RFC4627</a></cite>].</p>

  <p>A <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD document</a> <em title="MUST" class="rfc2119">MUST</em> be a single <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>
    or an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> whose elements are each
    <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node objects</a> at the top level.</p>

  <p>In contrast to JSON, in JSON-LD the keys in <a href="#dfn-json-object" title="json-object" class="tref internalDFN">objects</a>
    <em title="MUST" class="rfc2119">MUST</em> be unique.</p>

  <div class="note"><div id="h_note_9" role="heading" aria-level="2" class="note-title"><span>Note</span></div><p class="">JSON-LD allows <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a> to be aliased
    (see <a class="sectionRef sec-ref" href="#aliasing-keywords">section 6.15 Aliasing Keywords</a> for details). Whenever a <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> is
    discussed in this grammar, the statements also apply to an alias for
    that <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>. For example, if the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>
    defines the <a href="#dfn-term" title="term" class="tref internalDFN">term</a> <code>id</code> as an alias for <code>@id</code>,
    that alias may be legitimately used as a substitution for <code>@id</code>.
    Note that <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> aliases are not expanded during context
    processing.</p></div>

  <section id="terms" class="normative">
    <h3 id="h3_terms" role="heading" aria-level="2"><span class="secno">8.1 </span>Terms</h3>

    <p>A <dfn id="dfn-term" title="term">term</dfn> is a short-hand <a href="#dfn-string" title="string" class="tref internalDFN">string</a> that expands
      to an <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a> or a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>.</p>

    <p>A <a href="#dfn-term" title="term" class="tref internalDFN">term</a> <em title="MUST NOT" class="rfc2119">MUST NOT</em> equal any of the JSON-LD
      <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a>.</p>

    <p>To avoid forward-compatibility issues, a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> <em title="SHOULD NOT" class="rfc2119">SHOULD NOT</em> start
      with an <code>@</code> character as future versions of JSON-LD may introduce
      additional <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a>. Furthermore, the term <em title="MUST NOT" class="rfc2119">MUST NOT</em>
      be an empty <a href="#dfn-string" title="string" class="tref internalDFN">string</a> (<code>""</code>) as not all programming languages
      are able to handle empty JSON keys.</p>

    <p>See <a class="sectionRef sec-ref" href="#the-context">section 5.1 The Context</a> and
      <a class="sectionRef sec-ref" href="#iris">section 5.2 IRIs</a> for further discussion
      on mapping <a href="#dfn-term" title="term" class="tref internalDFN">terms</a> to <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>.</p>
  </section>

  <section id="node-objects" class="normative">
    <h3 id="h3_node-objects" role="heading" aria-level="2"><span class="secno">8.2 </span>Node Objects</h3>

    <p>A <dfn id="dfn-node-object" title="node-object">node object</dfn> represents zero or more properties of a
      <a href="#dfn-node" title="node" class="tref internalDFN">node</a> in the <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a> serialized by the
      <a href="#dfn-json-ld-document" title="json-ld-document" class="tref internalDFN">JSON-LD document</a>. A <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> is a
      <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> if it exists outside of a JSON-LD
      <a href="#dfn-context" title="context" class="tref internalDFN">context</a> and:</p>

    <ul>
      <li>it does not contain the <code>@value</code>, <code>@list</code>,
        or <code>@set</code> keywords, and</li>
      <li>it is not the top-most <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> in the JSON-LD document
        consisting of no other members than <code>@graph</code> and
        <code>@context</code>.</li>
    </ul>

    <p>The <a href="#dfn-property" title="property" class="tref internalDFN">properties</a> of a <a href="#dfn-node" title="node" class="tref internalDFN">node</a> in
      a <a href="#dfn-graph" title="graph" class="tref internalDFN">graph</a> may be spread among different
      <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node objects</a> within a document. When
      that happens, the keys of the different
      <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node objects</a> need to be merged to create the
      properties of the resulting <a href="#dfn-node" title="node" class="tref internalDFN">node</a>.</p>

    <p>A <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>. All keys
      which are not <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>,
      <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact IRIs</a>, <a href="#dfn-term" title="term" class="tref internalDFN">terms</a>
      valid in the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>, or one of the following
      <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a> <em title="MUST" class="rfc2119">MUST</em> be ignored when processed:</p>

    <ul>
      <li><code>@context</code>,</li>
      <li><code>@id</code>,</li>
      <li><code>@graph</code>,</li>
      <li><code>@type</code>,</li>
      <li><code>@reverse</code>, or</li>
      <li><code>@index</code></li>
    </ul>

    <p>If the <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> contains the <code>@context</code>
      key, its value <em title="MUST" class="rfc2119">MUST</em> be <a href="#dfn-null" title="null" class="tref internalDFN">null</a>, an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
      a <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-context-definition" title="context-definition" class="tref internalDFN">context definition</a>, or
      an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> composed of any of these.</p>

    <p>If the <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> contains the <code>@id</code> key,
      its value <em title="MUST" class="rfc2119">MUST</em> be an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
      or a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> (including
      <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifiers</a>).
      See <a class="sectionRef sec-ref" href="#node-identifiers">section 5.3 Node Identifiers</a>,
      <a class="sectionRef sec-ref" href="#compact-iris">section 6.3 Compact IRIs</a>, and
      <a class="sectionRef sec-ref" href="#identifying-blank-nodes">section 6.14 Identifying Blank Nodes</a> for further discussion on
      <code>@id</code> values.</p>

    <p>If the <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> contains the <code>@graph</code>
      key, its value <em title="MUST" class="rfc2119">MUST</em> be
      a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> or
      an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> of zero or more <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node objects</a>.
      If the <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> contains an <code>@id</code> keyword,
      its value is used as the label of a named graph.
      See <a class="sectionRef sec-ref" href="#named-graphs">section 6.13 Named Graphs</a> for further discussion on
      <code>@graph</code> values. As a special case, if a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>
      contains no keys other than <code>@graph</code> and <code>@context</code>, and the
      <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> is the root of the JSON-LD document, the
      <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> is not treated as a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>; this
      is used as a way of defining <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node
      definitions</a> that may not form a connected graph. This allows a
      <a href="#dfn-context" title="context" class="tref internalDFN">context</a> to be defined which is shared by all of the constituent
      <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node objects</a>.</p>

    <p>If the <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> contains the <code>@type</code>
      key, its value <em title="MUST" class="rfc2119">MUST</em> be either an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a
      <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
      (including <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifiers</a>),
      a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> defined in the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> expanding into an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or
      an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> of any of these.
      See <a class="sectionRef sec-ref" href="#specifying-the-type">section 5.4 Specifying the Type</a> for further discussion on
      <code>@type</code> values.</p>

    <p>If the <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> contains the <code>@reverse</code> key,
      its value <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> containing members representing reverse
      properties. Each value of such a reverse property <em title="MUST" class="rfc2119">MUST</em> be an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
      a <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>,
      a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> or an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> containing a combination of these.</p>

    <p>If the <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> contains the <code>@index</code> key,
      its value <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-string" title="string" class="tref internalDFN">string</a>. See
      <a class="sectionRef sec-ref" href="#data-indexing">section 6.16 Data Indexing</a> for further discussion
      on <code>@index</code> values.</p>

    <p>Keys in a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> that are not
      <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a> <em title="MAY" class="rfc2119">MAY</em> expand to an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>
      using the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a>. The values associated with keys that expand
      to an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> <em title="MUST" class="rfc2119">MUST</em> be one of the following:</p>

    <ul>
      <li><a href="#dfn-string" title="string" class="tref internalDFN">string</a>,</li>
      <li><a href="#dfn-number" title="number" class="tref internalDFN">number</a>,</li>
      <li><a href="#dfn-true" title="true" class="tref internalDFN">true</a>,</li>
      <li><a href="#dfn-false" title="false" class="tref internalDFN">false</a>,</li>
      <li><a href="#dfn-null" title="null" class="tref internalDFN">null</a>,</li>
      <li><a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>,</li>
      <li><a href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a>,</li>
      <li><a href="#dfn-list-object" title="list-object" class="tref internalDFN">list object</a>,</li>
      <li><a href="#dfn-set-object" title="set-object" class="tref internalDFN">set object</a>,</li>
      <li>an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> of zero or more of the possibilities above,</li>
      <li>a <a href="#dfn-language-map" title="language-map" class="tref internalDFN">language map</a>, or </li>
      <li>an <a href="#dfn-index-map" title="index-map" class="tref internalDFN">index map</a></li>
    </ul>
  </section>

  <section id="value-objects" class="normative">
    <h3 id="h3_value-objects" role="heading" aria-level="2"><span class="secno">8.3 </span>Value Objects</h3>

    <p>A <dfn id="dfn-value-object" title="value-object">value object</dfn> is used to explicitly associate a type or a
      language with a value to create a <a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed value</a> or a <a href="#dfn-language-tagged-string" title="language-tagged-string" class="tref internalDFN">language-tagged
      string</a>.</p>

    <p>A <a href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a> <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> containing the
      <code>@value</code> key. It <em title="MAY" class="rfc2119">MAY</em> also contain a <code>@type</code>,
      a <code>@language</code>, an <code>@index</code>, or an <code>@context</code> key but <em title="MUST NOT" class="rfc2119">MUST NOT</em> contain
      both a <code>@type</code> and a <code>@language</code> key at the same time.
      A <a href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a> <em title="MUST NOT" class="rfc2119">MUST NOT</em> contain any other keys that expand to an
      <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>.</p>

    <p>The value associated with the <code>@value</code> key <em title="MUST" class="rfc2119">MUST</em> be either a
      <a href="#dfn-string" title="string" class="tref internalDFN">string</a>, a <a href="#dfn-number" title="number" class="tref internalDFN">number</a>, <a href="#dfn-true" title="true" class="tref internalDFN">true</a>,
      <a href="#dfn-false" title="false" class="tref internalDFN">false</a> or <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</p>

    <p>The value associated with the <code>@type</code> key <em title="MUST" class="rfc2119">MUST</em> be a
      <a href="#dfn-term" title="term" class="tref internalDFN">term</a>, a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
      an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, or <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</p>

    <p>The value associated with the <code>@language</code> key <em title="MUST" class="rfc2119">MUST</em> have the
      lexical form described in [<cite><a href="#bib-BCP47" class="bibref">BCP47</a></cite>], or be <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</p>

    <p>The value associated with the <code>@index</code> key <em title="MUST" class="rfc2119">MUST</em> be a
      <a href="#dfn-string" title="string" class="tref internalDFN">string</a>.</p>

    <p>See <a class="sectionRef sec-ref" href="#typed-values">section 6.4 Typed Values</a> and
      <a class="sectionRef sec-ref" href="#string-internationalization">section 6.9 String Internationalization</a>
      for more information on <a href="#dfn-value-object" title="value-object" class="tref internalDFN">value objects</a>.</p>
  </section>

  <section id="lists-and-sets" class="normative">
    <h3 id="h3_lists-and-sets" role="heading" aria-level="2"><span class="secno">8.4 </span>Lists and Sets</h3>

    <p>A <a href="#dfn-list" title="list" class="tref internalDFN">list</a> represents an <em>ordered</em> set of values. A set
      represents an <em>unordered</em> set of values. Unless otherwise specified,
      <a href="#dfn-array" title="array" class="tref internalDFN">arrays</a> are unordered in JSON-LD. As such, the
      <code>@set</code> keyword, when used in the body of a JSON-LD document,
      represents just syntactic sugar which is optimized away when processing the document.
      However, it is very helpful when used within the context of a document. Values
      of terms associated with a <code>@set</code> or <code>@list</code> container
      will always be represented in the form of an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> when a document
      is processed—even if there is just a single value that would otherwise be optimized to
      a non-array form in <a href="#compacted-document-form">compact document form</a>.
      This simplifies post-processing of the data as the data is always in a
      deterministic form.</p>

    <p>A <dfn id="dfn-list-object" title="list-object">list object</dfn> <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> that contains no
      keys that expand to an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> other
      than <code>@list</code>, <code>@context</code>, and <code>@index</code>.</p>

    <p>A <dfn id="dfn-set-object" title="set-object">set object</dfn> <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> that contains no
      keys that expand to an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a> other
      than <code>@list</code>, <code>@context</code>, and <code>@index</code>.
      Please note that the <code>@index</code> key will be ignored when being processed.</p>

    <p>In both cases, the value associated with the keys <code>@list</code> and <code>@set</code>
      <em title="MUST" class="rfc2119">MUST</em> be one of the following types:</p>
    <ul>
      <li><a href="#dfn-string" title="string" class="tref internalDFN">string</a>,</li>
      <li><a href="#dfn-number" title="number" class="tref internalDFN">number</a>,</li>
      <li><a href="#dfn-true" title="true" class="tref internalDFN">true</a>,</li>
      <li><a href="#dfn-false" title="false" class="tref internalDFN">false</a>,</li>
      <li><a href="#dfn-null" title="null" class="tref internalDFN">null</a>,</li>
      <li><a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>,</li>
      <li><a href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a>, or</li>
      <li>an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> of zero or more of the above possibilities</li>
    </ul>

    <p>See <a class="sectionRef sec-ref" href="#sets-and-lists">section 6.11 Sets and Lists</a> for further discussion on sets and lists.</p>
  </section>

  <section id="language-maps" class="normative">
    <h3 id="h3_language-maps" role="heading" aria-level="2"><span class="secno">8.5 </span>Language Maps</h3>

    <p>A <dfn id="dfn-language-map" title="language-map">language map</dfn> is used to associate a language with a value in a
      way that allows easy programmatic access. A <a href="#dfn-language-map" title="language-map" class="tref internalDFN">language map</a> may be
      used as a term value within a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> if the term is defined
      with <code>@container</code> set to <code>@language</code>. The keys of a
      <a href="#dfn-language-map" title="language-map" class="tref internalDFN">language map</a> <em title="MUST" class="rfc2119">MUST</em> be <a href="#dfn-string" title="string" class="tref internalDFN">strings</a> representing
      [<cite><a href="#bib-BCP47" class="bibref">BCP47</a></cite>] language codes and the values <em title="MUST" class="rfc2119">MUST</em> be any of the following types:</p>

    <ul>
      <li><a href="#dfn-null" title="null" class="tref internalDFN">null</a>,</li>
      <li><a href="#dfn-string" title="string" class="tref internalDFN">string</a>, or</li>
      <li>an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> of zero or more of the above possibilities</li>
    </ul>

    <p>See <a class="sectionRef sec-ref" href="#string-internationalization">section 6.9 String Internationalization</a> for further discussion
      on language maps.</p>
  </section>

  <section id="index-maps" class="normative">
    <h3 id="h3_index-maps" role="heading" aria-level="2"><span class="secno">8.6 </span>Index Maps</h3>

    <p>An <dfn id="dfn-index-map" title="index-map">index map</dfn> allows keys that have no semantic meaning,
      but should be preserved regardless, to be used in JSON-LD documents.
      An <a href="#dfn-index-map" title="index-map" class="tref internalDFN">index map</a> may
      be used as a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> value within a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> if the
      term is defined with <code>@container</code> set to <code>@index</code>.
      The values of the members of an <a href="#dfn-index-map" title="index-map" class="tref internalDFN">index map</a> <em title="MUST" class="rfc2119">MUST</em> be one
      of the following types:</p>

    <ul>
      <li><a href="#dfn-string" title="string" class="tref internalDFN">string</a>,</li>
      <li><a href="#dfn-number" title="number" class="tref internalDFN">number</a>,</li>
      <li><a href="#dfn-true" title="true" class="tref internalDFN">true</a>,</li>
      <li><a href="#dfn-false" title="false" class="tref internalDFN">false</a>,</li>
      <li><a href="#dfn-null" title="null" class="tref internalDFN">null</a>,</li>
      <li><a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>,</li>
      <li><a href="#dfn-value-object" title="value-object" class="tref internalDFN">value object</a>,</li>
      <li><a href="#dfn-list-object" title="list-object" class="tref internalDFN">list object</a>,</li>
      <li><a href="#dfn-set-object" title="set-object" class="tref internalDFN">set object</a>,</li>
      <li>an <a href="#dfn-array" title="array" class="tref internalDFN">array</a> of zero or more of the above possibilities</li>
    </ul>

    <p>See <a class="sectionRef sec-ref" href="#data-indexing">section 6.16 Data Indexing</a> for further information on this topic.</p>
  </section>

<section id="context-definitions" class="normative">
  <h3 id="h3_context-definitions" role="heading" aria-level="2"><span class="secno">8.7 </span>Context Definitions</h3>

  <p>A <dfn id="dfn-context-definition" title="context-definition">context definition</dfn> defines a <a href="#dfn-local-context" title="local-context" class="tref internalDFN">local context</a> in a
    <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>.</p>

  <p>A <a href="#dfn-context-definition" title="context-definition" class="tref internalDFN">context definition</a> <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a> whose
    keys <em title="MUST" class="rfc2119">MUST</em> either be <a href="#dfn-term" title="term" class="tref internalDFN">terms</a>,
    <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact IRIs</a>, <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute IRIs</a>,
    or the <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a> <code>@language</code>, <code>@base</code>,
    and <code>@vocab</code>.</p>

  <p>If the <a href="#dfn-context-definition" title="context-definition" class="tref internalDFN">context definition</a> has a <code>@language</code> key,
    its value <em title="MUST" class="rfc2119">MUST</em> have the lexical form described in [<cite><a href="#bib-BCP47" class="bibref">BCP47</a></cite>] or be <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</p>

  <p>If the <a href="#dfn-context-definition" title="context-definition" class="tref internalDFN">context definition</a> has a <code>@base</code> key,
    its value <em title="MUST" class="rfc2119">MUST</em> be an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-relative-iri" title="relative-iri" class="tref internalDFN">relative <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
    or <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</p>

  <p>If the <a href="#dfn-context-definition" title="context-definition" class="tref internalDFN">context definition</a> has a <code>@vocab</code> key,
    its value <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
    a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>, a <a href="#dfn-term" title="term" class="tref internalDFN">term</a>, or <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</p>

  <p>The value of keys that are not <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a> <em title="MUST" class="rfc2119">MUST</em> be either an
    <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-term" title="term" class="tref internalDFN">term</a>,
    a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>, a <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>, <a href="#dfn-null" title="null" class="tref internalDFN">null</a>,
    or an <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a>.</p>

  <p>An <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a> is used to describe the mapping
    between a <a href="#dfn-term" title="term" class="tref internalDFN">term</a> and its expanded identifier, as well as other
    properties of the value associated with the <a href="#dfn-term" title="term" class="tref internalDFN">term</a> when it is
    used as key in a <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>.</p>

  <p>An <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a> <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-json-object" title="json-object" class="tref internalDFN">JSON object</a>
    composed of zero or more keys from <code>@id</code>, <code>@reverse</code>,
    <code>@type</code>, <code>@language</code> or <code>@container</code>. An
    <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a> <em title="SHOULD NOT" class="rfc2119">SHOULD NOT</em> contain any other keys.</p>

  <p>If an <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a> has an <code>@reverse</code> member,
    it <em title="MUST NOT" class="rfc2119">MUST NOT</em> have an <code>@id</code> member at the same time. If an
    <code>@container</code> member exists, its value <em title="MUST" class="rfc2119">MUST</em> be <a href="#dfn-null" title="null" class="tref internalDFN">null</a>,
    <code>@set</code>, or <code>@index</code>.</p>

  <p>If the term being defined is not a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a> or
    <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a> and the <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> does not have an
    <code>@vocab</code> mapping, the <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a> <em title="MUST" class="rfc2119">MUST</em>
    include the <code>@id</code> key.</p>

  <p>If the <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a> contains the <code>@id</code>
    <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>, its value <em title="MUST" class="rfc2119">MUST</em> be <a href="#dfn-null" title="null" class="tref internalDFN">null</a>, an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>,
    a <a href="#dfn-blank-node-identifier" title="blank-node-identifier" class="tref internalDFN">blank node identifier</a>, a <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-term" title="term" class="tref internalDFN">term</a>,
    or a <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>.</p>

  <p>If the <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a> contains the <code>@type</code>
    <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>, its value <em title="MUST" class="rfc2119">MUST</em> be an <a href="#dfn-absolute-iri" title="absolute-iri" class="tref internalDFN">absolute <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a
    <a href="#dfn-compact-iri" title="compact-iri" class="tref internalDFN">compact <abbr title="Internationalized Resource Identifier">IRI</abbr></a>, a <a href="#dfn-term" title="term" class="tref internalDFN">term</a>, <a href="#dfn-null" title="null" class="tref internalDFN">null</a>, or the one of the
    <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keywords</a> <code>@id</code> or <code>@vocab</code>.</p>

  <p>If the <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a> contains the <code>@language</code> <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>,
    its value <em title="MUST" class="rfc2119">MUST</em> have the lexical form described in [<cite><a href="#bib-BCP47" class="bibref">BCP47</a></cite>] or be <a href="#dfn-null" title="null" class="tref internalDFN">null</a>.</p>

  <p>If the <a href="#dfn-expanded-term-definition" title="expanded-term-definition" class="tref internalDFN">expanded term definition</a> contains the <code>@container</code>
    <a href="#dfn-keyword" title="keyword" class="tref internalDFN">keyword</a>, its value <em title="MUST" class="rfc2119">MUST</em> be either <code>@list</code>, <code>@set</code>,
    <code>@language</code>, <code>@index</code>, or be <a href="#dfn-null" title="null" class="tref internalDFN">null</a>. If the value
    is <code>@language</code>, when the <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is used outside of the
    <code>@context</code>, the associated value <em title="MUST" class="rfc2119">MUST</em> be a <a href="#dfn-language-map" title="language-map" class="tref internalDFN">language map</a>.
    If the value is <code>@index</code>, when the <a href="#dfn-term" title="term" class="tref internalDFN">term</a> is used outside of
    the <code>@context</code>, the associated value <em title="MUST" class="rfc2119">MUST</em> be an
    <a href="#dfn-index-map" title="index-map" class="tref internalDFN">index map</a>.</p>

  <p><a href="#dfn-term" title="term" class="tref internalDFN">Terms</a> <em title="MUST NOT" class="rfc2119">MUST NOT</em> be used in a circular manner. That is,
    the definition of a term cannot depend on the definition of another term if that other
    term also depends on the first term.</p>

  <p>See <a class="sectionRef sec-ref" href="#the-context">section 5.1 The Context</a> for further discussion on contexts.</p>
</section>

</section>

<section id="relationship-to-rdf" class="normative">
  <!--OddPage--><h2 id="h2_relationship-to-rdf" role="heading" aria-level="1"><span class="secno">9. </span>Relationship to RDF</h2>

  <p>JSON-LD is a
    <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-concrete-rdf-syntax" title="concrete-rdf-syntax" class="tref externalDFN">concrete RDF syntax</a>
    as described in [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>]. Hence, a JSON-LD document is both an
    RDF document <em>and</em> a JSON document and correspondingly represents an
    instance of an RDF data model. However, JSON-LD also extends the RDF data
    model to optionally allow JSON-LD to serialize
    <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset" title="generalized-rdf-datasets" class="tref externalDFN">Generalized RDF Datasets</a>.
    The JSON-LD extensions to the RDF data model are:</p>

  <ul>
    <li>In JSON-LD <a href="#dfn-property" title="property" class="tref internalDFN">properties</a> can be
      <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> or <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank nodes</a>
      whereas in RDF properties (predicates) have to be <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>. This
      means that JSON-LD serializes
      <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset" title="generalized-rdf-datasets" class="tref externalDFN">generalized RDF Datasets</a>.</li>
    <li>In JSON-LD <a href="#dfn-list" title="list" class="tref internalDFN">lists</a> are part of the data model
      whereas in RDF they are part of a vocabulary, namely [<cite><a href="#bib-RDF-SCHEMA" class="bibref">RDF-SCHEMA</a></cite>].</li>
    <li>RDF values are either typed <em>literals</em>
      (<a href="#dfn-typed-value" title="typed-value" class="tref internalDFN">typed values</a>) or <em>language-tagged strings</em>
      (<a href="#dfn-language-tagged-string" title="language-tagged-string" class="tref internalDFN">language-tagged strings</a>) whereas
      JSON-LD also supports JSON's native data types, i.e., <a href="#dfn-number" title="number" class="tref internalDFN">number</a>,
      <a href="#dfn-string" title="string" class="tref internalDFN">strings</a>, and the boolean values <a href="#dfn-true" title="true" class="tref internalDFN">true</a>
      and <a href="#dfn-false" title="false" class="tref internalDFN">false</a>. The JSON-LD Processing Algorithms and API specification [<cite><a href="#bib-JSON-LD-API" class="bibref">JSON-LD-API</a></cite>]
      defines the <a href="http://www.w3.org/TR/2013/PR-json-ld-api-20131105/#data-round-tripping">conversion rules</a>
      between JSON's native data types and RDF's counterparts to allow round-tripping.</li>
  </ul>

  <p>Summarized, these differences mean that JSON-LD is capable of serializing any RDF
    graph or dataset and most, but not all, JSON-LD documents can be directly
    interpreted as RDF as described in RDF 1.1 Concepts [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>].</p>

  <p>For authors and developers working with <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank nodes</a>
    as <a href="#dfn-property" title="property" class="tref internalDFN">properties</a> when deserializing to RDF,
    three potential approaches are suggested:</p>

  <ul>
    <li>If the author is not yet ready to commit to a stable <abbr title="Internationalized Resource Identifier">IRI</abbr>, the
      property should be mapped to an <abbr title="Internationalized Resource Identifier">IRI</abbr> that is documented as unstable.</li>
    <li>If the developer wishes to use <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank nodes</a>
      as <a href="#dfn-property" title="property" class="tref internalDFN">properties</a> and also wishes to interpret the
      data as a
      <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset" title="generalized-rdf-dataset" class="tref externalDFN">generalized RDF Dataset</a>,
      there is an option, <i>produce generalized RDF</i>, in the
      Deserialize JSON-LD to RDF algorithm [<cite><a href="#bib-JSON-LD-API" class="bibref">JSON-LD-API</a></cite>] to do so. Note that a
      <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset" title="generalized-rdf-dataset" class="tref externalDFN">generalized RDF Dataset</a>
      is an extension of RDF; it does not conform to the RDF standard.</li>
    <li>If the author or developer wishes to use <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank nodes</a>
      as <a href="#dfn-property" title="property" class="tref internalDFN">properties</a> and wishes to interpret the data
      as a standard (non-generalized)
      <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-dataset" title="rdf-dataset" class="tref externalDFN">RDF Dataset</a>,
      it is possible to losslessly interpret JSON-LD as RDF by transforming
      <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank nodes</a> used as
      <a href="#dfn-property" title="property" class="tref internalDFN">properties</a> to <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a>,
      by minting new "Skolem IRIs" as per
      <cite><a href="http://www.w3.org/TR/rdf11-concepts/#section-skolemization">Replacing Blank Nodes with IRIs</a></cite>
      of [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>].</li>
  </ul>

  <p>The normative algorithms for interpreting JSON-LD as RDF and serializing
    RDF as JSON-LD are specified in the JSON-LD Processing Algorithms and API
    specification [<cite><a href="#bib-JSON-LD-API" class="bibref">JSON-LD-API</a></cite>].</p>

  <p>Even though JSON-LD serializes
    <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-generalized-rdf-dataset" title="generalized-rdf-datasets" class="tref externalDFN">generalized RDF Datasets</a>, it can
    also be used as a <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-source" title="rdf-graph-source" class="tref externalDFN">RDF graph source</a>.
    In that case, a consumer <em title="MUST" class="rfc2119">MUST</em> only use the default graph and ignore all named graphs.
    This allows servers to expose data in languages such as Turtle and JSON-LD
    using content negotiation.</p>

  <div class="note"><div id="h_note_10" role="heading" aria-level="2" class="note-title"><span>Note</span></div><p class="">Publishers supporting both dataset and graph syntaxes have to ensure that
    the primary data is stored in the default graph to enable consumers that do not support
    datasets to process the information.</p></div>

  <section id="serializing-deserializing-rdf" class="informative">
    <h3 id="h3_serializing-deserializing-rdf" role="heading" aria-level="2"><span class="secno">9.1 </span>Serializing/Deserializing RDF</h3><p><em>This section is non-normative.</em></p>

    <p>The process of serializing RDF as JSON-LD and deserializing JSON-LD to RDF
      depends on executing the algorithms defined in
      <cite><a href="http://www.w3.org/TR/2013/PR-json-ld-api-20131105/#rdf-serialization-deserialization-algorithms">RDF Serialization-Deserialization Algorithms</a></cite>
      in the JSON-LD Processing Algorithms and API specification [<cite><a href="#bib-JSON-LD-API" class="bibref">JSON-LD-API</a></cite>].
      It is beyond the scope of this document to detail these algorithms any further,
      but a summary of the necessary operations is provided to illustrate the process.</p>

    <p>The procedure to deserialize a JSON-LD document to RDF involves the
      following steps:</p>

    <ol>
      <li>Expand the JSON-LD document, removing any context; this ensures
        that properties, types, and values are given their full representation
        as <a href="#dfn-iri" title="iri" class="tref internalDFN">IRIs</a> and expanded values. Expansion
        is discussed further in <a class="sectionRef sec-ref" href="#expanded-document-form">section 6.17 Expanded Document Form</a>.</li>
      <li>Flatten the document, which turns the document into an array of
        <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node objects</a>. Flattening is discussed
        further in <a class="sectionRef sec-ref" href="#flattened-document-form">section 6.19 Flattened Document Form</a>.</li>
      <li>Turn each <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> into a series of
        <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple" title="rdf-triples" class="tref externalDFN">RDF triples</a>.</li>
    </ol>

    <p>For example, consider the following JSON-LD document in compact form:</p>

    <div class="example"><div class="example-title"><span>Example 63</span>: Sample JSON-LD document</div><pre class="example">{
  "@context": {
    "name": "http://xmlns.com/foaf/0.1/name",
    "knows": "http://xmlns.com/foaf/0.1/knows"
  },
  "@id": "http://me.markus-lanthaler.com/",
  "name": "Markus Lanthaler",
  "knows": [
    {
      "@id": "http://manu.sporny.org/about#manu",
      "name": "Manu Sporny"
    },
    {
      "name": "Dave Longley"
    }
  ]
}</pre></div>

    <p>Running the JSON-LD Expansion and Flattening algorithms against the
      JSON-LD input document in the example above would result in the
      following output:</p>

    <div class="example"><div class="example-title"><span>Example 64</span>: Flattened and expanded form for the previous example</div><pre class="example">[
  {
    "@id": "_:b0",
    "http://xmlns.com/foaf/0.1/name": "Dave Longley"
  },
  {
    "@id": "http://manu.sporny.org/about#manu",
    "http://xmlns.com/foaf/0.1/name": "Manu Sporny"
  },
  {
    "@id": "http://me.markus-lanthaler.com/",
    "http://xmlns.com/foaf/0.1/name": "Markus Lanthaler",
    "http://xmlns.com/foaf/0.1/knows": [
      { "@id": "http://manu.sporny.org/about#manu" },
      { "@id": "_:b0" }
    ]
  }
]</pre></div>

    <p>Deserializing this to RDF now is a straightforward process of turning
      each <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a> into one or more RDF triples. This can be
      expressed in Turtle as follows:</p>

    <div class="example"><div class="example-title"><span>Example 65</span>: Turtle representation of expanded/flattened document</div><pre class="example">_:b0 &lt;http://xmlns.com/foaf/0.1/name&gt; "Dave Longley" .

&lt;http://manu.sporny.org/about#manu&gt; &lt;http://xmlns.com/foaf/0.1/name&gt; "Manu Sporny" .

&lt;http://me.markus-lanthaler.com/&gt; &lt;http://xmlns.com/foaf/0.1/name&gt; "Markus Lanthaler" ;
    &lt;http://xmlns.com/foaf/0.1/knows&gt; &lt;http://manu.sporny.org/about#manu&gt;, _:b0 .</pre></div>

    <p>The process of serializing RDF as JSON-LD can be thought of as the
      inverse of this last step, creating an expanded JSON-LD document closely
      matching the triples from RDF, using a single <a href="#dfn-node-object" title="node-object" class="tref internalDFN">node object</a>
      for all triples having a common subject, and a single <a href="#dfn-property" title="property" class="tref internalDFN">property</a>
      for those triples also having a common predicate.</p>
  </section>
</section>

<section id="relationship-to-other-linked-data-formats" class="appendix informative">
  <!--OddPage--><h2 id="h2_relationship-to-other-linked-data-formats" role="heading" aria-level="1"><span class="secno">A. </span>Relationship to Other Linked Data Formats</h2><p><em>This section is non-normative.</em></p>

  <p>The JSON-LD examples below demonstrate how JSON-LD can be used to
    express semantic data marked up in other linked data formats such as Turtle,
    RDFa, Microformats, and Microdata. These sections are merely provided as
    evidence that JSON-LD is very flexible in what it can express across different
    Linked Data approaches.</p>

  <section id="turtle" class="informative">
    <h3 id="h3_turtle" role="heading" aria-level="2"><span class="secno">A.1 </span>Turtle</h3><p><em>This section is non-normative.</em></p>

    <p>The following are examples of transforming RDF expressed in Turtle [<cite><a href="#bib-TURTLE" class="bibref">TURTLE</a></cite>]
      into JSON-LD.</p>

    <section>
      <h4 role="heading" aria-level="3" id="prefix-definitions">Prefix definitions</h4><p><em>This section is non-normative.</em></p>

      <p>The JSON-LD context has direct equivalents for the Turtle
        <code>@prefix</code> declaration:</p>

      <div class="example"><div class="example-title"><span>Example 66</span>: A set of statements serialized in Turtle</div><pre class="example">@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .

&lt;http://manu.sporny.org/about#manu&gt; a foaf:Person;
  foaf:name "Manu Sporny";
  foaf:homepage &lt;http://manu.sporny.org/&gt; .</pre></div>

      <div class="example"><div class="example-title"><span>Example 67</span>: The same set of statements serialized in JSON-LD</div><pre class="example">{
  "@context":
  {
    "foaf": "http://xmlns.com/foaf/0.1/"
  },
  "@id": "http://manu.sporny.org/about#manu",
  "@type": "foaf:Person",
  "foaf:name": "Manu Sporny",
  "foaf:homepage": { "@id": "http://manu.sporny.org/" }
}</pre></div>
    </section>

    <section>
      <h4 role="heading" aria-level="3" id="embedding-1">Embedding</h4>

      <p>Both Turtle and JSON-LD allow embedding, although Turtle only allows embedding of
        <a href="#dfn-blank-node" title="blank-node" class="tref internalDFN">blank nodes</a>.</p>

      <div class="example"><div class="example-title"><span>Example 68</span>: Embedding in Turtle</div><pre class="example">@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .

&lt;http://manu.sporny.org/about#manu&gt;
  a foaf:Person;
  foaf:name "Manu Sporny";
  foaf:knows [ a foaf:Person; foaf:name "Gregg Kellogg" ] .</pre></div>

      <div class="example"><div class="example-title"><span>Example 69</span>: Same embedding example in JSON-LD</div><pre class="example">{
  "@context":
  {
    "foaf": "http://xmlns.com/foaf/0.1/"
  },
  "@id": "http://manu.sporny.org/about#manu",
  "@type": "foaf:Person",
  "foaf:name": "Manu Sporny",
  "foaf:knows":
  {
    "@type": "foaf:Person",
    "foaf:name": "Gregg Kellogg"
  }
}</pre></div>
    </section>

    <section>
      <h4 role="heading" aria-level="3" id="conversion-of-native-data-types">Conversion of native data types</h4>

      <p>In JSON-LD numbers and boolean values are native data types. While Turtle
        has a shorthand syntax to express such values, RDF's abstract syntax requires
        that numbers and boolean values are represented as typed literals. Thus,
        to allow full round-tripping, the JSON-LD Processing Algorithms and API specification [<cite><a href="#bib-JSON-LD-API" class="bibref">JSON-LD-API</a></cite>]
        defines conversion rules between JSON-LD's native data types and RDF's
        counterparts. <a href="#dfn-number" title="number" class="tref internalDFN">Numbers</a> without fractions are
        converted to <code>xsd:integer</code>-typed literals, numbers with fractions
        to <code>xsd:double</code>-typed literals and the two boolean values
        <a href="#dfn-true" title="true" class="tref internalDFN">true</a> and <a href="#dfn-false" title="false" class="tref internalDFN">false</a> to a <code>xsd:boolean</code>-typed
        literal. All typed literals are in canonical lexical form.</p>

      <div class="example"><div class="example-title"><span>Example 70</span>: JSON-LD using native data types for numbers and boolean values</div><pre class="example">{
  "@context":
  {
    "ex": "http://example.com/vocab#"
  },
  "@id": "http://example.com/",
  "ex:numbers": [ 14, 2.78 ],
  "ex:booleans": [ true, false ]
}</pre></div>

      <div class="example"><div class="example-title"><span>Example 71</span>: Same example in Turtle using typed literals</div><pre class="example">@prefix ex: &lt;http://example.com/vocab#&gt; .
@prefix xsd: &lt;http://www.w3.org/2001/XMLSchema#&gt; .

&lt;http://example.com/&gt;
  ex:numbers "14"^^xsd:integer, "2.78E0"^^xsd:double ;
  ex:booleans "true"^^xsd:boolean, "false"^^xsd:boolean .</pre></div>

    </section>

    <section>
      <h4 role="heading" aria-level="3" id="lists">Lists</h4>
      <p>Both JSON-LD and Turtle can represent sequential lists of values.</p>

      <div class="example"><div class="example-title"><span>Example 72</span>: A list of values in Turtle</div><pre class="example">@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .

&lt;http://example.org/people#joebob&gt; a foaf:Person;
  foaf:name "Joe Bob";
  foaf:nick ( "joe" "bob" "jaybee" ) .</pre></div>

      <div class="example"><div class="example-title"><span>Example 73</span>: Same example with a list of values in JSON-LD</div><pre class="example">{
  "@context":
  {
    "foaf": "http://xmlns.com/foaf/0.1/"
  },
  "@id": "http://example.org/people#joebob",
  "@type": "foaf:Person",
  "foaf:name": "Joe Bob",
  "foaf:nick":
  {
    "@list": [ "joe", "bob", "jaybee" ]
  }
}</pre></div>
    </section>
  </section>

  <section id="rdfa" class="informative">
    <h3 id="h3_rdfa" role="heading" aria-level="2"><span class="secno">A.2 </span>RDFa</h3><p><em>This section is non-normative.</em></p>

    <p>The following example describes three people with their respective names and
      homepages in RDFa [<cite><a href="#bib-RDFA-CORE" class="bibref">RDFA-CORE</a></cite>].</p>

    <div class="example"><div class="example-title"><span>Example 74</span>: RDFa fragment that describes three people</div><pre class="example">&lt;div <span class="highlight">prefix="foaf: http://xmlns.com/foaf/0.1/"</span>&gt;
   &lt;ul&gt;
      &lt;li <span class="highlight">typeof="foaf:Person"</span>&gt;
        &lt;a <span class="highlight">rel="foaf:homepage" href="http://example.com/bob/" property="foaf:name"</span>&gt;Bob&lt;/a&gt;
      &lt;/li&gt;
      &lt;li <span class="highlight">typeof="foaf:Person"</span>&gt;
        &lt;a <span class="highlight">rel="foaf:homepage" href="http://example.com/eve/" property="foaf:name"</span>&gt;Eve&lt;/a&gt;
      &lt;/li&gt;
      &lt;li <span class="highlight">typeof="foaf:Person"</span>&gt;
        &lt;a <span class="highlight">rel="foaf:homepage" href="http://example.com/manu/" property="foaf:name"</span>&gt;Manu&lt;/a&gt;
      &lt;/li&gt;
   &lt;/ul&gt;
&lt;/div&gt;</pre></div>

    <p>An example JSON-LD implementation using a single <a href="#dfn-context" title="context" class="tref internalDFN">context</a> is
      described below.</p>

    <div class="example"><div class="example-title"><span>Example 75</span>: Same description in JSON-LD (context shared among node objects)</div><pre class="example">{
  "@context":
  {
    "foaf": "http://xmlns.com/foaf/0.1/"
  },
  "@graph":
  [
    {
      "@type": "foaf:Person",
      "foaf:homepage": "http://example.com/bob/",
      "foaf:name": "Bob"
    },
    {
      "@type": "foaf:Person",
      "foaf:homepage": "http://example.com/eve/",
      "foaf:name": "Eve"
    },
    {
      "@type": "foaf:Person",
      "foaf:homepage": "http://example.com/manu/",
      "foaf:name": "Manu"
    }
  ]
}</pre></div>
  </section>

  <section id="microformats" class="informative">
    <h3 id="h3_microformats" role="heading" aria-level="2"><span class="secno">A.3 </span>Microformats</h3><p><em>This section is non-normative.</em></p>

    <p>The following example uses a simple Microformats hCard example to express
      how Microformats [<cite><a href="#bib-MICROFORMATS" class="bibref">MICROFORMATS</a></cite>] are represented in JSON-LD.</p>

    <div class="example"><div class="example-title"><span>Example 76</span>: HTML fragment with a simple Microformats hCard</div><pre class="example">&lt;div class="vcard"&gt;
 &lt;a class="url fn" href="http://tantek.com/"&gt;Tantek Çelik&lt;/a&gt;
&lt;/div&gt;</pre></div>

    <p>The representation of the hCard expresses the Microformat terms in the
      <a href="#dfn-context" title="context" class="tref internalDFN">context</a> and uses them directly for the <code>url</code> and <code>fn</code>
      properties. Also note that the Microformat to JSON-LD processor has
      generated the proper URL type for <code>http://tantek.com/</code>.</p>

    <div class="example"><div class="example-title"><span>Example 77</span>: Same hCard representation in JSON-LD</div><pre class="example">{
  "@context":
  {
    "vcard": "http://microformats.org/profile/hcard#vcard",
    "url":
    {
      "@id": "http://microformats.org/profile/hcard#url",
      "@type": "@id"
    },
    "fn": "http://microformats.org/profile/hcard#fn"
  },
  "@type": "vcard",
  "url": "http://tantek.com/",
  "fn": "Tantek Çelik"
}</pre></div>
  </section>

  <section id="microdata" class="informative">
    <h3 id="h3_microdata" role="heading" aria-level="2"><span class="secno">A.4 </span>Microdata</h3><p><em>This section is non-normative.</em></p>

    <p>The HTML Microdata [<cite><a href="#bib-MICRODATA" class="bibref">MICRODATA</a></cite>] example below expresses book information as
      a Microdata Work item.</p>

    <div class="example"><div class="example-title"><span>Example 78</span>: HTML fragments that describes a book using microdata</div><pre class="example">&lt;dl itemscope
    itemtype="http://purl.org/vocab/frbr/core#Work"
    itemid="http://purl.oreilly.com/works/45U8QJGZSQKDH8N"&gt;
 &lt;dt&gt;Title&lt;/dt&gt;
 &lt;dd&gt;&lt;cite itemprop="http://purl.org/dc/terms/title"&gt;Just a Geek&lt;/cite&gt;&lt;/dd&gt;
 &lt;dt&gt;By&lt;/dt&gt;
 &lt;dd&gt;&lt;span itemprop="http://purl.org/dc/terms/creator"&gt;Wil Wheaton&lt;/span&gt;&lt;/dd&gt;
 &lt;dt&gt;Format&lt;/dt&gt;
 &lt;dd itemprop="http://purl.org/vocab/frbr/core#realization"
     itemscope
     itemtype="http://purl.org/vocab/frbr/core#Expression"
     itemid="http://purl.oreilly.com/products/9780596007683.BOOK"&gt;
  &lt;link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/BOOK"&gt;
  Print
 &lt;/dd&gt;
 &lt;dd itemprop="http://purl.org/vocab/frbr/core#realization"
     itemscope
     itemtype="http://purl.org/vocab/frbr/core#Expression"
     itemid="http://purl.oreilly.com/products/9780596802189.EBOOK"&gt;
  &lt;link itemprop="http://purl.org/dc/terms/type" href="http://purl.oreilly.com/product-types/EBOOK"&gt;
  Ebook
 &lt;/dd&gt;
&lt;/dl&gt;</pre></div>

    <p>Note that the JSON-LD representation of the Microdata information stays
      true to the desires of the Microdata community to avoid contexts and
      instead refer to items by their full <a href="#dfn-iri" title="iri" class="tref internalDFN"><abbr title="Internationalized Resource Identifier">IRI</abbr></a>.</p>

    <div class="example"><div class="example-title"><span>Example 79</span>: Same book description in JSON-LD (avoiding contexts)</div><pre class="example">[
  {
    "@id": "http://purl.oreilly.com/works/45U8QJGZSQKDH8N",
    "@type": "http://purl.org/vocab/frbr/core#Work",
    "http://purl.org/dc/terms/title": "Just a Geek",
    "http://purl.org/dc/terms/creator": "Whil Wheaton",
    "http://purl.org/vocab/frbr/core#realization":
    [
      "http://purl.oreilly.com/products/9780596007683.BOOK",
      "http://purl.oreilly.com/products/9780596802189.EBOOK"
    ]
  },
  {
    "@id": "http://purl.oreilly.com/products/9780596007683.BOOK",
    "@type": "http://purl.org/vocab/frbr/core#Expression",
    "http://purl.org/dc/terms/type": "http://purl.oreilly.com/product-types/BOOK"
  },
  {
    "@id": "http://purl.oreilly.com/products/9780596802189.EBOOK",
    "@type": "http://purl.org/vocab/frbr/core#Expression",
    "http://purl.org/dc/terms/type": "http://purl.oreilly.com/product-types/EBOOK"
  }
]</pre></div>
  </section>
</section>

<section id="iana-considerations" class="appendix normative">
  <!--OddPage--><h2 id="h2_iana-considerations" role="heading" aria-level="1"><span class="secno">B. </span>IANA Considerations</h2>

  <p>This section has been submitted to the Internet Engineering Steering
    Group (IESG) for review, approval, and registration with IANA.</p>

  <h2 id="application-ld-json">application/ld+json</h2>
  <dl>
    <dt>Type name:</dt>
    <dd>application</dd>
    <dt>Subtype name:</dt>
    <dd>ld+json</dd>
    <dt>Required parameters:</dt>
    <dd>None</dd>
    <dt>Optional parameters:</dt>
    <dd>
      <dl>
        <dt><code>profile</code></dt>
        <dd>
          <p>A a non-empty list of space-separated URIs identifying specific
            constraints or conventions that apply to a JSON-LD document according [<cite><a href="#bib-RFC6906" class="bibref">RFC6906</a></cite>].
            A profile does not change the semantics of the resource representation
            when processed without profile knowledge, so that clients both with
            and without knowledge of a profiled resource can safely use the same
            representation. The <code>profile</code> parameter <em title="MAY" class="rfc2119">MAY</em> be used by
            clients to express their preferences in the content negotiation process.
            If the profile parameter is given, a server <em title="SHOULD" class="rfc2119">SHOULD</em> return a document that
            honors the profiles in the list which are recognized by the server.
            It is <em title="RECOMMENDED" class="rfc2119">RECOMMENDED</em> that profile URIs are dereferenceable and provide
            useful documentation at that URI. For more information and background
            please refer to [<cite><a href="#bib-RFC6906" class="bibref">RFC6906</a></cite>].</p>
          <p>This specification defines three values for the <code>profile</code> parameter.
            To request or specify <a href="#expanded-document-form">expanded JSON-LD document form</a>,
            the URI <code>http://www.w3.org/ns/json-ld#expanded</code> <em title="SHOULD" class="rfc2119">SHOULD</em> be used.
            To request or specify <a href="#compacted-document-form">compacted JSON-LD document form</a>,
            the URI <code>http://www.w3.org/ns/json-ld#compacted</code> <em title="SHOULD" class="rfc2119">SHOULD</em> be used.
            To request or specify <a href="#flattened-document-form">flattened JSON-LD document form</a>,
            the URI <code>http://www.w3.org/ns/json-ld#flattened</code> <em title="SHOULD" class="rfc2119">SHOULD</em> be used.
            Please note that, according [<cite><a href="#bib-HTTP11" class="bibref">HTTP11</a></cite>], the value of the <code>profile</code>
            parameter has to be enclosed in quotes (<code>"</code>) because it contains
            special characters and, if multiple profiles are combined, whitespace.</p>
          <p>When processing the "profile" media type parameter, it is important to
            note that its value contains one or more URIs and not IRIs. In some cases
            it might therefore be necessary to convert between IRIs and URIs as specified in
            <cite><a href="http://tools.ietf.org/html/rfc3986#section-5.1">section 3 Relationship between IRIs and URIs</a></cite>
            of [<cite><a href="#bib-RFC3987" class="bibref">RFC3987</a></cite>].</p>
        </dd>
      </dl>
    </dd>
    <dt>Encoding considerations:</dt>
    <dd>See RFC&nbsp;6839, section 3.1.</dd>
    <dt>Security considerations:</dt>
    <dd>See [<cite><a href="#bib-RFC4627" class="bibref">RFC4627</a></cite>]
      <p>Since JSON-LD is intended to be a pure data exchange format for
        directed graphs, the serialization <em title="SHOULD NOT" class="rfc2119">SHOULD NOT</em> be passed through a
        code execution mechanism such as JavaScript's <code>eval()</code>
        function to be parsed. An (invalid) document may contain code that,
        when executed, could lead to unexpected side effects compromising
        the security of a system.</p>
      <p>When processing JSON-LD documents, links to remote contexts are
        typically followed automatically, resulting in the transfer of files
        without the explicit request of the user for each one. If remote
        contexts are served by third parties, it may allow them to gather
        usage patterns or similar information leading to privacy concerns.
        Specific implementations, such as the API defined in the
        JSON-LD Processing Algorithms and API specification [<cite><a href="#bib-JSON-LD-API" class="bibref">JSON-LD-API</a></cite>],
        may provide fine-grained mechanisms to control this behavior.</p>
      <p>JSON-LD contexts that are loaded from the Web over non-secure connections,
        such as HTTP, run the risk of being altered by an attacker such that
        they may modify the JSON-LD <a href="#dfn-active-context" title="active-context" class="tref internalDFN">active context</a> in a way that
        could compromise security. It is advised that any application that
        depends on a remote context for mission critical purposes vet and
        cache the remote context before allowing the system to use it.</p>
      <p>Given that JSON-LD allows the substitution of long IRIs with short terms,
        JSON-LD documents may expand considerably when processed and, in the worst case,
        the resulting data might consume all of the recipient's resources. Applications
        should treat any data with due skepticism.</p>
    </dd>
    <dt>Interoperability considerations:</dt>
    <dd>Not Applicable</dd>
    <dt>Published specification:</dt>
    <dd>http://www.w3.org/TR/json-ld</dd>
    <dt>Applications that use this media type:</dt>
    <dd>Any programming environment that requires the exchange of
      directed graphs. Implementations of JSON-LD have been created for
      JavaScript, Python, Ruby, PHP, and C++.
    </dd>
    <dt>Additional information:</dt>
    <dd>
      <dl>
        <dt>Magic number(s):</dt>
        <dd>Not Applicable</dd>
        <dt>File extension(s):</dt>
        <dd>.jsonld</dd>
        <dt>Macintosh file type code(s):</dt>
        <dd>TEXT</dd>
      </dl>
    </dd>
    <dt>Person &amp; email address to contact for further information:</dt>
    <dd>Manu Sporny &lt;msporny@digitalbazaar.com&gt;</dd>
    <dt>Intended usage:</dt>
    <dd>Common</dd>
    <dt>Restrictions on usage:</dt>
    <dd>None</dd>
    <dt>Author(s):</dt>
    <dd>Manu Sporny, Dave Longley, Gregg Kellogg, Markus Lanthaler, Niklas Lindström</dd>
    <dt>Change controller:</dt>
    <dd><abbr title="World Wide Web Consortium">W3C</abbr></dd>
  </dl>

  <p>Fragment identifiers used with <a href="#application-ld-json">application/ld+json</a>
    are treated as in RDF syntaxes, as per
    <cite><a href="http://www.w3.org/TR/rdf11-concepts/#section-fragID">RDF 1.1 Concepts and Abstract Syntax</a></cite>
    [<cite><a href="#bib-RDF11-CONCEPTS" class="bibref">RDF11-CONCEPTS</a></cite>].</p>
</section>

<section id="acknowledgements" class="appendix informative">
  <!--OddPage--><h2 id="h2_acknowledgements" role="heading" aria-level="1"><span class="secno">C. </span>Acknowledgements</h2><p><em>This section is non-normative.</em></p>

  <p>The authors would like to extend a deep appreciation and the most sincere
    thanks to Mark Birbeck, who contributed foundational concepts
    to JSON-LD via his work on RDFj. JSON-LD uses a number of core concepts
    introduced in RDFj, such as the context as a mechanism to provide an
    environment for interpreting JSON data. Mark had also been very involved in
    the work on RDFa as well. RDFj built upon that work. JSON-LD exists
    because of the work and ideas he started nearly a decade ago in 2004.</p>

  <p>A large amount of thanks goes out to the JSON-LD Community Group
    participants who worked through many of the technical issues on the mailing
    list and the weekly telecons - of special mention are François Daoust,
    Stéphane Corlosquet, Lin Clark, and Zdenko 'Denny' Vrandečić.</p>

  <p>The work of David I. Lehn and Mike Johnson are appreciated for
    reviewing, and performing several early implementations
    of the specification. Thanks also to Ian Davis for this work on RDF/JSON.</p>

  <p>Thanks to the following individuals, in order of their first name, for
    their input on the specification: Adrian Walker, Alexandre Passant,
    Andy Seaborne, Ben Adida, Blaine Cook, Bradley Allen, Brian Peterson,
    Bryan Thompson, Conal Tuohy, Dan Brickley, Danny Ayers, Daniel Leja,
    Dave Reynolds, David Booth, David I. Lehn, David Wood, Dean Landolt,
    Ed Summers, elf Pavlik,
    Eric Prud'hommeaux, Erik Wilde, Fabian Christ, Jon A. Frost, Gavin Carothers,
    Glenn McDonald, Guus Schreiber, Henri Bergius, Jose María Alvarez Rodríguez,
    Ivan Herman, Jack Moffitt, Josh Mandel, KANZAKI Masahide, Kingsley Idehen,
    Kuno Woudt, Larry Garfield, Mark Baker, Mark MacGillivray, Marko Rodriguez,
    Marios Meimaris, Matt Wuerstl,
    Melvin Carvalho, Nathan Rixham, Olivier Grisel, Paolo Ciccarese, Pat Hayes,
    Patrick Logan, Paul Kuykendall, Pelle Braendgaard,
    Peter Patel-Schneider, Peter Williams, Pierre-Antoine Champin,
    Richard Cyganiak, Roy T. Fielding, Sandro Hawke, Simon Grant, Srecko Joksimovic,
    Stephane Fellah, Steve Harris, Ted Thibodeau Jr., Thomas Steiner, Tim Bray,
    Tom Morris, Tristan King, Sergio Fernández, Werner Wilms, and William Waites.</p>
</section>



<section rel="bibo:chapter" resource="#references" typeof="bibo:Chapter" class="appendix" id="references"><!--OddPage--><h2 id="h2_references" role="heading" aria-level="1"><span class="secno">D. </span>References</h2><section rel="bibo:chapter" resource="#normative-references" typeof="bibo:Chapter" id="normative-references"><h3 id="h3_normative-references" role="heading" aria-level="2"><span class="secno">D.1 </span>Normative references</h3><dl about="" class="bibliography"><dt id="bib-BCP47">[BCP47]</dt><dd rel="dcterms:requires">A. Phillips; M. Davis. <a href="http://tools.ietf.org/html/bcp47"><cite>Tags for Identifying Languages</cite></a>. September 2009. IETF Best Current Practice. URL: <a href="http://tools.ietf.org/html/bcp47">http://tools.ietf.org/html/bcp47</a>
</dd><dt id="bib-RDF11-CONCEPTS">[RDF11-CONCEPTS]</dt><dd rel="dcterms:requires">Richard Cyganiak, David Wood, Markus Lanthaler, Editors. <cite><a href="http://www.w3.org/TR/2013/CR-rdf11-concepts-20131105/">RDF 1.1 Concepts and Abstract Syntax.</a></cite> 5 November 2013. W3C Candidate Recommendation (work in progress). URL: <a href="http://www.w3.org/TR/2013/CR-rdf11-concepts-20131105/">http://www.w3.org/TR/2013/CR-rdf11-concepts-20131105/</a>. The latest edition is available at <a href="http://www.w3.org/TR/rdf11-concepts/">http://www.w3.org/TR/rdf11-concepts/</a>
</dd><dt id="bib-RFC2119">[RFC2119]</dt><dd rel="dcterms:requires">S. Bradner. <a href="http://www.ietf.org/rfc/rfc2119.txt"><cite>Key words for use in RFCs to Indicate Requirement Levels.</cite></a> March 1997. Internet RFC 2119.  URL: <a href="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt</a>
</dd><dt id="bib-RFC3987">[RFC3987]</dt><dd rel="dcterms:requires">M. Dürst; M. Suignard. <a href="http://www.ietf.org/rfc/rfc3987.txt"><cite>Internationalized Resource Identifiers (IRIs)</cite></a>. January 2005. RFC. URL: <a href="http://www.ietf.org/rfc/rfc3987.txt">http://www.ietf.org/rfc/rfc3987.txt</a>
</dd><dt id="bib-RFC4627">[RFC4627]</dt><dd rel="dcterms:requires">D. Crockford. <a href="http://www.ietf.org/rfc/rfc4627.txt"><cite>The application/json Media Type for JavaScript Object Notation (JSON) (RFC 4627)</cite></a>. July 2006. RFC. URL: <a href="http://www.ietf.org/rfc/rfc4627.txt">http://www.ietf.org/rfc/rfc4627.txt</a>
</dd><dt id="bib-RFC5988">[RFC5988]</dt><dd rel="dcterms:requires">M. Nottingham. <cite><a href="http://www.ietf.org/rfc/rfc5988.txt">Web Linking</a>.</cite> October 2010. Internet RFC 5988. URL: <a href="http://www.ietf.org/rfc/rfc5988.txt">http://www.ietf.org/rfc/rfc5988.txt</a>
</dd></dl></section><section rel="bibo:chapter" resource="#informative-references" typeof="bibo:Chapter" id="informative-references"><h3 id="h3_informative-references" role="heading" aria-level="2"><span class="secno">D.2 </span>Informative references</h3><dl about="" class="bibliography"><dt id="bib-HTTP11">[HTTP11]</dt><dd rel="dcterms:references">R. Fielding et al. <a href="http://www.ietf.org/rfc/rfc2616.txt"><cite>Hypertext Transfer Protocol - HTTP/1.1</cite></a>. June 1999. RFC. URL: <a href="http://www.ietf.org/rfc/rfc2616.txt">http://www.ietf.org/rfc/rfc2616.txt</a>
</dd><dt id="bib-JSON-LD-API">[JSON-LD-API]</dt><dd rel="dcterms:references">Markus Lanthaler, Gregg Kellogg, Manu Sporny, Editors. <cite><a href="http://www.w3.org/TR/2013/PR-json-ld-api-20131105/">JSON-LD 1.0 Processing Algorithms and API</a>.</cite> 5 November 2013. W3C Proposed Recommendation. URL: <a href="http://www.w3.org/TR/2013/PR-json-ld-api-20131105/">http://www.w3.org/TR/2013/PR-json-ld-api-20131105/</a>. The latest edition is available at <a href="http://www.w3.org/TR/json-ld-api/">http://www.w3.org/TR/json-ld-api/</a>
</dd><dt id="bib-JSON-LD-TESTS">[JSON-LD-TESTS]</dt><dd rel="dcterms:references"><cite><a href="http://www.w3.org/2013/json-ld-tests/">JSON-LD 1.0 Test Suite</a></cite>. W3C Test Suite. URL: <a href="http://www.w3.org/2013/json-ld-tests/">http://www.w3.org/2013/json-ld-tests/</a>
</dd><dt id="bib-LINKED-DATA">[LINKED-DATA]</dt><dd rel="dcterms:references">Tim Berners-Lee. <cite><a href="http://www.w3.org/DesignIssues/LinkedData.html">Linked Data</a></cite>. Personal View, imperfect but published. URL: <a href="http://www.w3.org/DesignIssues/LinkedData.html">http://www.w3.org/DesignIssues/LinkedData.html</a>
</dd><dt id="bib-MICRODATA">[MICRODATA]</dt><dd rel="dcterms:references">Ian Hickson, Editor. <cite><a href="http://www.w3.org/TR/2012/WD-microdata-20121025/">HTML Microdata</a>.</cite> 25 October 2012. W3C Working Draft (work in progress). URL: <a href="http://www.w3.org/TR/2012/WD-microdata-20121025/">http://www.w3.org/TR/2012/WD-microdata-20121025/</a>. The latest edition is available at <a href="http://www.w3.org/TR/microdata/">http://www.w3.org/TR/microdata/</a>
</dd><dt id="bib-MICROFORMATS">[MICROFORMATS]</dt><dd rel="dcterms:references"><a href="http://microformats.org"><cite>Microformats</cite></a>. URL: <a href="http://microformats.org">http://microformats.org</a>
</dd><dt id="bib-RDF-SCHEMA">[RDF-SCHEMA]</dt><dd rel="dcterms:references">Dan Brickley; Ramanathan Guha. <a href="http://www.w3.org/TR/rdf-schema"><cite>RDF Vocabulary Description Language 1.0: RDF Schema</cite></a>. 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/rdf-schema">http://www.w3.org/TR/rdf-schema</a>
</dd><dt id="bib-RDF11-MT">[RDF11-MT]</dt><dd rel="dcterms:references">Patrick J. Hayes, Peter F. Patel-Schneider, Editors. <cite><a href="http://www.w3.org/TR/2013/CR-rdf11-mt-20131105/">RDF 1.1 Semantics.</a></cite> 5 November 2013. W3C Candidate Recommendation (work in progress). URL: <a href="http://www.w3.org/TR/2013/CR-rdf11-mt-20131105/">http://www.w3.org/TR/2013/CR-rdf11-mt-20131105/</a>. The latest edition is available at <a href="http://www.w3.org/TR/rdf11-mt/">http://www.w3.org/TR/rdf11-mt/</a>
</dd><dt id="bib-RDFA-CORE">[RDFA-CORE]</dt><dd rel="dcterms:references">Ben Adida; Mark Birbeck; Shane McCarron; Ivan Herman et al. <a href="http://www.w3.org/TR/rdfa-core/"><cite>RDFa Core 1.1 - Second Edition</cite></a>. 22 August 2013. W3C Recommendation. URL: <a href="http://www.w3.org/TR/rdfa-core/">http://www.w3.org/TR/rdfa-core/</a>
</dd><dt id="bib-RFC3986">[RFC3986]</dt><dd rel="dcterms:references">T. Berners-Lee; R. Fielding; L. Masinter. <a href="http://www.ietf.org/rfc/rfc3986.txt"><cite>Uniform Resource Identifier (URI): Generic Syntax (RFC 3986)</cite></a>. January 2005. RFC. URL: <a href="http://www.ietf.org/rfc/rfc3986.txt">http://www.ietf.org/rfc/rfc3986.txt</a>
</dd><dt id="bib-RFC6839">[RFC6839]</dt><dd rel="dcterms:references">Tony Hansen, Alexey Melnikov. <cite><a href="http://www.ietf.org/rfc/rfc6839.txt">Additional Media Type Structured Syntax Suffixes</a>.</cite> January 2013. Internet RFC 6839. URL: <a href="http://www.ietf.org/rfc/rfc6839.txt">http://www.ietf.org/rfc/rfc6839.txt</a>
</dd><dt id="bib-RFC6906">[RFC6906]</dt><dd rel="dcterms:references">Erik Wilde. <cite><a href="http://www.ietf.org/rfc/rfc6906.txt">The 'profile' Link Relation Type</a>.</cite> March 2013. Internet RFC 6906. URL: <a href="http://www.ietf.org/rfc/rfc6906.txt">http://www.ietf.org/rfc/rfc6906.txt</a>
</dd><dt id="bib-TURTLE">[TURTLE]</dt><dd rel="dcterms:references">Eric Prud'hommeaux, Gavin Carothers, Editors. <cite><a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">Turtle: Terse RDF Triple Language.</a></cite> 19 February 2013. W3C Candidate Recommendation (work in progress). URL: <a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">http://www.w3.org/TR/2013/CR-turtle-20130219/</a>. The latest edition is available at <a href="http://www.w3.org/TR/turtle/">http://www.w3.org/TR/turtle/</a>
</dd></dl></section></section></body></html>
